一、Session会话控制
定义两个常量矩阵a,b(tf.constant)
a = tf.constant([[1.0,2.0]],name = 'a')
b = tf.constant([[2.0],
[3.0]],name = 'a')
product = tf.matmul(a,b)
要输出相加得到的结果,不能直接输出result,需要先生成一个会话(session),并且通过一个这个会话(session)来计算结果
#写法一
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()
#写法二(不需要加sess.close(),直接放入会话窗口)
with tf.Session() as sess:
result = sess.run(product)
print(result)
结果为 [[8.]]
二、Variable变量
#定义一个变量variable
state = tf.Variable(0,name = 'a')
#定义一个常量b
one = tf.constant(1)
#加法
new_value = tf.add(state,one)
#将new_value的值赋予state,该动作命名为update
update = tf.assign(state,new_value)
非常重要!非常重要!非常重要!
初始化所有变量:init = tf.initialize_all_variables()
还要在sess里激活init: sess.run(init)
#初始化变量!!!
init = tf.initialize_all_variables()
with tf.Session() as sess:
#激活init!!!
sess.run(init)
for _ in range(3):
sess.run(update)
#不能 print(state) 不起作用!!一定要把 sess 的指针指向 state 再进行 print 才能得到想要的结果!
print(sess.run(update))
结果为 4
三、Placeholder 传入值
注意:传入placeholder 与 feed_dict={} (字典)是绑定在一起的,必须同时出现!!!
#placeholder是用来存放变量 ,在 Tensorflow 中需要定义 placeholder 的 type ,一般为 float32 形式
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
out = tf.multiply(input1,input2)
session会话控制
with tf.Session() as sess:
#feed_dict={} (字典)
result = sess.run(out,feed_dict={input1:[7.],input2:[4.]})
print(result)
结果为 [28.]
四、添加层layer
构建简单的一层神经网络,包括常见参数weights、biases和activation_function
首先定义添加神经层的函数def add_layer(),它有四个参数:输入值、输入的大小、输出的大小和激励函数
def add_layer(inputs,in_size,out_size,activation_function = None):
#定义weights和biases,weight为随机变量(variable)
Weights = tf.Variable(tf.random_normal([in_size,out_size]))#矩阵大小为in_size*out_size
biases = tf.Variable(tf.zeros([1,out_size])+0.1)#biases不为0,加上任意一个小数值
#定义Wx_plus_b, 即神经网络未激活的值
Wx_plus_b = tf.matmul(inputs,Weights) + biases
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs