tensorflow学习笔记(5)--- 神经网络参数与tensorflow变量

在tensorflow中,变量(tf.Variable)的作用是保存和更新神经网络中的参数。
可在tensorflow中声明一个2*3,元素均值为0且标准差为2的矩阵变量(可通过mean参数指定平均值):
weights=tf.Variable(tf.random_normal[2,3],stddev=2)
在tensorflow中变量的初始值可以设置成随机数、常数或者是通过其他变量计算得到。

在神经网络中,偏置项(biases)通常是通过常数来设置初始值。
tensorflow也支持通过其他变量的初始值来初始化新的变量。
w2=tf.Variable(weights.initial_value())

import tensorflow as tf
#参数w1,w2
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
#特征向量
x=tf.constant([(0.7,0.9)])
#前向传播算法
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)


sess=tf.Session()


sess.run(w1.initializer)#初始化w1
sess.run(w2.initializer)#初始化w2


print(sess.run(y))
sess.close()


上述程序实现了神经网络的前向传播过程。
定义w1, w2, a和y的过程对应了tensorflow中的第一步。这一步定义了tensorflow计算图中的所有运算。
在tensorflow的第二步中声明一个会话,并通过会话计算结果。 在计算y之前,需要将所有的变量初始化。即虽然在变量定义时有变量初始化的方法,但这个方法没有真正被运行。在计算y之前,需要通过运行w1.initializer和w2.initalizer来给变量赋值。
当变量数目变多时,可以使用
init_op=tf.initialize_all_variables()
sess.run(init_op)
来初始化所有变量
在tensorflow中,变量的声明tf.Variable的运算,其结果是一个张量, 所以变量是一个特殊的张量
在tensorflow中,所有变量都会被自动的加入GraphKeys.VARIABLES集合中。通过tf.all_variables函数可以拿到计算图中所有的变量,拿到计算图中所有的变量有助于持久化整个计算图的运行状态。

猜你喜欢

转载自blog.csdn.net/labpqsdr/article/details/80153598
今日推荐