4.3.3 节 调度在TF上的应用(开始学习TensorFlow)

64页末尾直到72页特殊情况上面

 

  讨论的是调度框架在TensorFlow上面的应用。

  首先就学习一下TensorFlow,http://c.biancheng.net/view/1885.html  这里讲的很好。

  

  t_random=tf.random_normal([2,3],mean=2.0,stddev=4,seed=12),创建随机张量的方法,2X3的矩阵,均值为2,标准差为4,
seed我猜是随机种子。
  tf.truncated_normal也是正态分布的随机数,但是根据3σ原则,距离mean为2σ以上的随机数将会被随机生成,因此叫截断的
正态分布随机数。
  t_random_3=tf.random_uniform([2,3],minval=-1.0,maxval=1.0,seed=12),给定上下界的伽玛分布数组,,,不知道为何要用
伽玛分布。
 
 

   变量

var1=tf.Variable(3)
var2=tf.Variable(4)
sum=tf.add(var1,var2)
with tf.Session() as sess:
      sess.run(var1.initializer)
      sess.run(var2.initializer)
      print(sess.run(sum))

  可以看到变量是需要初始化的。

  嫌麻烦可以全局化初始化。

  代码如下

var1=tf.Variable(3)
var2=tf.Variable(4)
sum=tf.add(var1,var2)
init=tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init)
  print(sess.run(sum))
    

  

 

  占位符

  感觉更麻烦了。

  feed_dict是一个关键字,可以向占位符当中喂数据。

  简单的如:

 

x=tf.placeholder("float")
y=2*x
data=tf.random_uniform([4,5],10)
with tf.Session() as sess:
      print(sess.run(y),feed_dict={x:sess.run(data)})

  只有一步计算

  复杂的同样如此

x1=tf.placeholder("float")
w1=tf.placeholder("float")
x2=tf.placeholder("float")
w2=tf.placeholder("float")
z1=tf.multiply(x1,w1)
z2=tf.multiply(x2,w2)
z3=tf.add(z1,z2)
with tf.Session() as sess:
  feed_dict={x1:[1],w1:[2],x2:[3],w2:[4]}
  print(sess.run(z3,feed_dict))

可以看出在DAG图上的所有占位符可以一次性全都定义完。

 

然后一个问题就是placeholder声明的时候的那些参数。

  要声明:

x1=tf.placeholder("float")
或者
x1=tf.placeholder(tf.float32)
写x1=tf.placeholder(float)是错误的
 
  而且datatype后面也有其他的参数。。好像是数据维度什么的。。。还没搞懂

  

 

 

  操作1  tf.cast改变数据类型

import tensorflow as tf


b=tf.Variable(tf.random_uniform([5,10],0,2,tf.int32))


with tf.Session() as sess:
  sess.run(b.initializer)
  print(sess.run(b))

  这段代码生成了一个只包含0,1的矩阵

  

import tensorflow as tf


b=tf.Variable(tf.random_uniform([5,10],0,2,tf.int32))
b_new=tf.cast(b,tf.float32)

with tf.Session() as sess:
  sess.run(b.initializer)
  print(sess.run(b_new))

  这样就把数据类型改为浮点类型了

 

 

  操作2  另外操作

  sess=tf.interactiveSession()

  x.initializer.run()

  print(x.eval())

  这好像是另外一套可行的操作。

  

 

 

 

 

 

  

posted @ 2021-09-19 21:03  TheDa  阅读(41)  评论(0编辑  收藏  举报