Tensorflow的设计理念称之为计算流图,在编写程序时,首先构筑整个系统的graph,代码并不会直接生效。然后,在实际的运行时,启动一个session,程序才会真正的运行。很多python程序的底层为C语言或者其他语言,执行一行脚本,就要切换一次,这样做的好处就是:避免反复地切换底层程序实际运行的上下文,tensorflow帮你优化整个系统的代码。
所以placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,它只会分配必要的内存。等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据。
tf.placeholder()
tf.placeholder(dtype, shape=None, name=None)
dtype:数据类型。常用的是 tf.float32,tf.float64等数值类型
shape:数据形状。默认是None,就是一维值,也可以是多维(比如[2,3], [None, 3]表示列是3,行不定)
name:名称
sess.run()
tf.Session.run(fetches, feed_dict=None)
当我们构建完图后,需要在一个会话中启动图,启动的第一步是创建一个Session对象。为了取回(Fetch)操作的输出内容, 可以在使用 Session 对象的 run()调用执行图时,传入一些 tensor, 这些 tensor 会帮助你取回结果。
在执行sess.run()时,tensorflow并不是计算了整个图,只是计算了与想要fetch 的值相关的部分。
feed_dict 的作用是给使用placeholder创建出来的tensor赋值
import tensorflow as tf
Str = tf.placeholder(tf.string)
with tf.Session() as sess:
output = sess.run(Str, feed_dict={Str: 'Hello World'})
print(output)
矩阵乘法
- tf.random_normal 从正态分布中输出随机值
- tf.truncated_normal 从截断的正态分布中输出随机值