tensorflow 的会话(Session)、变量的初始化、张量的计算

____tz_zs

本篇为学习tensorflow为加深对计变量的初始化,张量的计算取值的理解所写的小Demo。因作者水平限制,可能有些片面或错误,欢迎指出,共同进步。

 

"""
@author: tz_zs(t3_3)

关于初始化、张量的计算取值等
"""

import tensorflow as tf

print("探究初始化的过程")
v1 = tf.Variable([1.0, 2.0])
v2 = tf.Variable([2.0, 3.0])
print(v1)  # <tf.Variable 'Variable:0' shape=(2,) dtype=float32_ref>
print(v2)  # <tf.Variable 'Variable_1:0' shape=(2,) dtype=float32_ref>
v3 = v1 + v2
print(v3)  # Tensor("add:0", shape=(2,), dtype=float32)

# 下面这种初始化方式会报错,因为没有指定默认会话
# ValueError: Cannot execute operation using `run()`: No default session is registered. Use `with sess.as_default():`
# or pass an explicit session to `run(session=sess)`
# sess = tf.Session()
# tf.global_variables_initializer().run()


# 下面这些是可以的
# 1、下面这种直接使用会话sess去run的
print("#" * 20, "1")
sess1 = tf.Session()
sess1.run(tf.global_variables_initializer())
print(sess1.run(v3))  # [ 3.  5.]
print(v3.eval(session=sess1))  # [ 3.  5.]

# 2、下面这种手动指定了默认的sess
print("#" * 20, "2")
sess2 = tf.Session()
with sess2.as_default():
    tf.global_variables_initializer().run()
    print(v3.eval())  # [ 3.  5.]

# 3、下面这种生成了上下文来管理sess,sess关心整个with内的结果
print("#" * 20, "3")
with tf.Session() as sess3:
    tf.global_variables_initializer().run()
    print(sess3.run(v3))  # [ 3.  5.]
    print(v3.eval(session=sess3))  # [ 3.  5.] 多此一举
    print(v3.eval())  # [ 3.  5.]

#################################################################
# tf.global_variables_initializer()的结构
# name: "init"
# # op: "NoOp"
# input: "^Variable/Assign"
# input: "^Variable_1/Assign"

with tf.Session() as sess4:
    sess4.run(tf.global_variables_initializer())
    print(sess4.run(v3))  # [ 3.  5.]
    print(v3.eval(session=sess4))  # [ 3.  5.]
    print(v3.eval())  # [ 3.  5.]

#################################################################
print("#######" * 10)
print("探究张量的值的计算")
#################################################################

v4 = tf.constant([1.0, 2.0])
v5 = tf.constant([2.0, 3.0])
v6 = v4 + v5
print(v4)  # Tensor("Const:0", shape=(2,), dtype=float32)
print(v5)  # Tensor("Const_1:0", shape=(2,), dtype=float32)
print(v6)  # Tensor("add:0", shape=(2,), dtype=float32)

# 第一种,手动指定了默认sess
sess5 = tf.Session()
with sess5.as_default():
    print(sess5.run(v6))  # [ 3.  5.]
    print(v6.eval(session=sess5))  # [ 3.  5.]
    print(v6.eval())  # [ 3.  5.]

# 第二种,还是生成的上下文管理的
with tf.Session() as sess6:
    print(sess6.run(v6))  # [ 3.  5.]
    print(v6.eval(session=sess6))  # [ 3.  5.]
    print(v6.eval())  # [ 3.  5.]

# 第三种,主动运行或指定会话
sess7 = tf.Session()
print(sess7.run(v6))  # [ 3.  5.]
print(v6.eval(session=sess7))  # [ 3.  5.]
# 下面这个会报错,因为没有默认会话____ValueError: Cannot evaluate tensor using `eval()`:
# No default session is registered. Use `with sess.as_default()` or pass an explicit session to `eval(session=sess)`
# print(v6.eval())

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值