#续接前文:https://blog.csdn.net/lxiao428/article/details/86033823
'''
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
#后续抽时间研究一下这些算法
'''