关于tensorflow的一点小知识

tensorflow运行模式——会话

第一种方法:

#创建一个会话
sess=tf.Session()
#使用这个创建的会话来得到关心的运算结果
sess.run(...)
#关闭会话,使得本次运行中使用到的资源可以被释放
sess.close()

使用这种方法的时候需要明确调用Session.close函数来关闭会话并释放资源。

第二种方法:

#创建一个会话,并通过python中的上下文管理器来管理这个会话
with tf.Session() as sess:
    #使用创建好的会话来关心计算结果
    sess.run()

第二种方法不需要调用close函数来关闭会话

第三种方法:

sess=tf.InteractiveSession()
print(result.eval())
sess.close()

tensorflow变量

声明一个2*3矩阵变量的方法

weights=tf.Variable(tf.random_normal([2,3],stddev=2))

样例中会产生一个2*3矩阵,矩阵中的元素的均值是0,标准差为2的随机数。如果在random_normal函数里再加入seed=1参数,即可保证每次运行的结果是一样的。下面是几个常见的随机数生成函数

random_normal: 正太分布随机数,均值mean,标准差stddev 
truncated_normal:截断正态分布随机数,均值mean,标准差stddev,不过只保留[mean-2*stddev,mean+2*stddev]范围内的随机数 
random_uniform:均匀分布随机数,范围为[minval,maxval]

常熟生成函数:

#产生全0的特征
tf.zeros([2,3],int32)

#产生全1的特征
tf.ones([2,3],int32)

#产生一个全部为给定数字的数组
tf.fill([2,3],9)

#产生一个给定值的数组
tf.constant([1,2,3])
#tf中的矩阵乘法
tf.matmul(x,w1)

神经网络的前向传播实现:

import tensorflow as tf

#声明两个变量
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()
init_op=tf.global_variables_initializer()
sess.run(init_op)

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

运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_32888153/article/details/84550691
今日推荐