第三章 Tensorflow入门(二)

时间:2019-01-11 12:09:54   |    系统故障   |   

'''

3.3 TensorFlow运行模型---会话

会话session拥有并管理TensorFlow程序运行的所有资源,当所有计算完成之后需要关闭会话来帮助系统回收资源,否则会出现资源泄露的问题。

'''

sess = tf.Session() #创建会话

sess.close()  #关闭会话

#with tf.Session() as sess  #通过上下文管理器管理会话

'''TensorFlow不会自动生成默认的会话,需要手动指定。'''

#tf.Tensor.eval()  #计算一个张量的取值,如:result.eval()

'''TensorFlow提供了一种交互式环境下直接构建默认会话的函数。这个函数就是tf.InteractiveSession。使用这个函数会自动将生成的会话注册为默认会话。'''

#with tf.InteractiveSession() as sess2:  #这么写会报错AttributeError: __enter__

sess2 = tf.InteractiveSession()

print(result.eval(), end = "") #输出:[4. 6.]

sess2.close()

'''tf.InteractiveSession()默认自己就是用户要操作的session,而tf.Session()没有这个默认,因此用eval()启动计算时需要指明session。

tf.InteractiveSession()是一种交互式的session方式,它让自己成为了默认的session,也就是说用户在不需要指明用哪个session运行的情况下,就可以运行起来,这就是默认的好处。

这样的话就是run()和eval()函数可以不指明session。tf.Session()使用时tf.eval()需要指定会话。

'''


'''

3.4 TensorFlow实现神经网络

3.4.1 TensorFlow游乐场地址:http://playground.tensorflow.org

在机器学习中,所有用于描述实体的数字的组合就是一个实体的特征向量(feature vector)。

通过特征提取,就可以将实际问题中的实体转化为空间中的点。

'''

weights = tf.Variable(tf.random_normal([2,3], stddev=2)) #正态分布初始化,均值为0,标准差为2

weights1 = tf.truncated_normal([2,3]) #正态分布,但是如果所随机出来的值偏离平均值2个标准差,则会重新随机这个数

weights2 = tf.random_uniform([2,3])#均匀分布

#weights3 = tf.random_gamma([2,3]) #Gamma分布,需要指定形状参数alpha

a1 = tf.zeros([2,3], tf.int32)  #全0

a2 = tf.ones([3,2])   #全1·················

a3 = tf.fill([2,3],8)  #全部初始化为8

a4 = tf.constant([1,2]) #初始化为[1,2]

#a = tf.matmul(a1, a2) #实现矩阵乘法

#tf.initialize_all_variables函数实现初始化所有变量的过程

#init_op = tf.initialize_all_variables()

#sess.run(init_op)


#在TensorFlow中使用常量的开销比较大,可以使用变量,placeholder中的数据类型也是不可以改变的,维度信息可以根据提供的数据推到得出,所以不一定要给出。

x = tf.placeholder(tf.float32, shape = (1,2), name = "input")

y = tf.abs(x)

with tf.Session() as sess4:

    print(sess4.run(y, feed_dict = {x: [[-0.7,-0.9]]})) #输出:[[0.7 0.9]]

'''

TensorFlow目前支持其中不同的优化器,常用的有三种:

tf.train.GradientDescentOptimizer

tf.train.AdamOptimizer

tf.train.MomentumOptimizer

#后续抽时间研究一下这些算法

'''