Tensorflow深度学习之四:placeholder和Session

来源:互联网 发布:centos编译安装php5.6 编辑:程序博客网 时间:2024/05/21 09:00

本文简单介绍了一下Tensorflow中的placeholder的使用方法。(由于本人最近刚刚接触Tensorflow,对其中的概念若有解释错误,还请不吝指出。)

import tensorflow as tf#Tensorflow默认会话sess = tf.InteractiveSession()#建立两个矩阵变量w1和w2#tf.random_normal(shape,#                 mean=0.0,#                 stddev=1.0,#                 dtype=dtypes.float32,#                 seed=None,#                 name=None)#产生随机正态分布#shape表示矩阵的维度,例如:#tf.random_normal([2,3],mean=1.0, stddev=1.0)是一个2行3列的矩阵,#mean表示均值,默认为0.0,stddev表示标准差,默认为1.0w1 = tf.Variable(tf.random_normal([2,3],mean=1.0, stddev=1.0))w2 = tf.Variable(tf.random_normal([3,1],mean=1.0, stddev=1.0))#定义一个placeholder,用于保存相应的数据。#placeholder(dtype, shape=None, name=None)#dtype:表示需要存放的数据的类型,一般可以使用tf.float32#shape:表示需要存放的数据的大小结构,简单可以理解为是一个多维数组,默认为None,可以不指定,根据实际需要,大小会自动调整。#name:名称,默认为None#在这里只是定义了这个placeholder的结构,并没有对其进行赋值(feed)操作。x = tf.placeholder(dtype=tf.float32,shape=[1,2],name="input")#初始化全局变量,这里由于只有w1和w2没有被初始化(之前只是定义了w1和w2的tensor,并没有被初始化)tf.global_variables_initializer().run()#tf.initialize_all_variables().run()    #这种写法也可,官方推荐使用上面的写法#计算矩阵相乘a=x*w1(关于矩阵乘法,可以参看线性代数)a = tf.matmul(x ,w1)#计算矩阵相乘y=a*w2y = tf.matmul(a, w2)#输出计算结果,是一个1行1列的二维矩阵#在这之前,我们都只是定义了Tensorflow中的Graph的结构,并没有真的去执行这个Graph。#现在,通过feed_dict参数,传入一个1行2列的矩阵,并将这个矩阵赋值给x。#由于y的计算依赖于x的取值,因此必须使用feed_dict参数(该参数本质上是一个Python字典)。#最后在默认会话下执行run方法,计算y的值,并输出。#run方法返回的是最后的计算结果,在这里是一个1行1列的二维矩阵。print(sess.run(y,feed_dict={x:[[0.7,0.9]]}))print(y)#使用下列语句会出现错误#print(y.eval())

输出结果如下:(不同的机器运行结果会不同)

[[ 0.6891433]]Tensor("MatMul_1:0", shape=(1, 1), dtype=float32)

我们也可以不指定placeholder的大小,其大小会根据实际情况确定。

import tensorflow as tf#Tensorflow默认会话sess = tf.InteractiveSession()w1 = tf.Variable(tf.random_normal([2,3],mean=1.0, stddev=1.0))w2 = tf.Variable(tf.random_normal([3,1],mean=1.0, stddev=1.0))#定义一个placeholder,用于保存相应的数据。#placeholder(dtype, shape=None, name=None)#dtype:表示需要存放的数据的类型,一般可以使用tf.float32#shape:表示需要存放的数据的大小结构,简单可以理解为是一个多维数组,默认为None,可以不指定,根据实际需要,大小会自动调整。#name:名称,默认为None#在这里只是定义了这个placeholder的结构,并没有对其进行赋值(feed)操作。#注意:这里并没有指定这个placeholder的大小。x = tf.placeholder(dtype=tf.float32,name="input")#初始化全局变量,这里由于只有w1和w2没有被初始化(之前只是定义了w1和w2的tensor,并没有被初始化)tf.global_variables_initializer().run()#tf.initialize_all_variables().run()    #这种写法也可,官方推荐使用上面的写法#计算矩阵相乘a=x*w1(关于矩阵乘法,可以参看线性代数)a = tf.matmul(x ,w1)#计算矩阵相乘y=a*w2y = tf.matmul(a, w2)#输出计算结果,是一个3行1列的二维矩阵#在这之前,我们都只是定义了Tensorflow中的Graph的结构,并没有真的去执行这个Graph。#现在,通过feed_dict参数,传入一个3行2列的矩阵,并将这个矩阵赋值给x。#由于y的计算依赖于x的取值,因此必须使用feed_dict参数(该参数本质上是一个Python字典)。#最后在默认会话下执行run方法,计算y的值,并输出。#run方法返回的是最后的计算结果,在这里是一个3行1列的二维矩阵。print(sess.run(y,feed_dict={x:[[0.7,0.9],[0.8, 0.3],[1.3,2.6]]}))print(y)#使用下列语句会出现错误#print(y.eval())

运行结果如下:

[[-0.6477921 ] [-0.32123464] [-1.73718834]]Tensor("MatMul_1:0", shape=(?, 1), dtype=float32)
阅读全文
0 0
原创粉丝点击