tf.reset_default_graph()
w1=tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1),name="w1")
w2=tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1),name="w2")
x=tf.constant([[0.7, 0.9]])
a=tf.matmul(x, w1)
y=tf.matmul(a, w2)
init_op=tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_op)
print(sess.run(y))
writer = tf.summary.FileWriter("logs", tf.get_default_graph())
writer.close()
"""
输出所有的变量
"""
for i in tf.trainable_variables():
print(i)
"""
对所属的计算图进行输出,可以发现使用变量、常数、操作、以及默认图进行的输出结果是一样的
"""
print(tf.get_default_graph())
print(a.graph)##可以直接使用某一个操作
print(w1.graph)
print(x.graph)
"""
对张量进行输出
"""
print(tf.get_default_graph().get_tensor_by_name("w1:0")) ##合理
# print(tf.get_default_graph().get_tensor_by_name("a"))## 不合理,不正确的一行
输出:
[[3.957578]]
Tensor("w1:0", shape=(2, 3), dtype=float32_ref)
使用tensorboard得到的输出图片长这样:
有些是变量,有些是操作。
tf.reset_default_graph()
def f1(x):
w1=tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1),name="w1")
return tf.matmul(x, w1)
def f2(a):
w2=tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1),name="w2")
return tf.matmul(a, w2)
a=f1(x)
y=f2(a)
init_op=tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_op)
print(sess.run(y))
x=tf.placeholder(tf.float32,shape=[None,2],name="x")
y=tf.placeholder(tf.float32,shape=[None,1],name="y")
tmp=tf.constant([[0.7,0.9]])
sess.run(y,feed_dict={x:tmp})
writer = tf.summary.FileWriter("logs", tf.get_default_graph())
writer.close()
"""
输出所有的变量
"""
for i in tf.trainable_variables():
print(i)
"""
对所属的计算图进行输出,可以发现使用变量、常数、操作、以及默认图进行的输出结果是一样的
"""
print(tf.get_default_graph())
print(a.graph)##可以直接使用某一个操作
print(w1.graph)
print(x.graph)
"""
对张量进行输出
"""
print(tf.get_default_graph().get_tensor_by_name("w1:0")) ##合理
# print(tf.get_default_graph().get_tensor_by_name("a"))## 不合理,不正确的一行
报错之处:
ValueError: Tensor("w1:0", shape=(2, 3), dtype=float32_ref) must be from the same graph as Tensor("Const:0", shape=(1, 2), dtype=float32).
错误提示说两个张量来自不同的图,我们可以发现再sess之前的几行代码之间几乎没有什么关系,x压根儿没有进行初始化,是一个未知的变量。所以我们尝试将运行的函数挪进sess里面。
tf.reset_default_graph()
def f1(xx):
w1=tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1),name="w1")
return tf.matmul(xx, w1)
def f2(aa):
w2=tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1),name="w2")
return tf.matmul(aa, w2)
init=tf.global_variables_initializer()
with tf.Session() as sess:
x=tf.placeholder(tf.float32,shape=[None,2],name="x")
y=tf.placeholder(tf.float32,shape=[None,1],name="y")
a=f1(x)
y=f2(a)
sess.run(init)
tmp=np.array([[0.7,0.9]])
sess.run(y,feed_dict={x:tmp})
writer = tf.summary.FileWriter("logs", tf.get_default_graph())
writer.close()
【报的错误】:
FailedPreconditionError: Attempting to use uninitialized value w1
[[node w1/read (defined at :5) ]]
此时tensorboard的图片是长这样,也就是说并没有进行初始化。所以我们要思考为什么没有成功初始化。
将完整的计算都挪到session的外面,说明在整个会话开始之前,整个框架已经完整存在,各个变量各就各位,这个时候的初始化才是有意义的。经过多番尝试,我发现在sess之前,计算图需要构建完成,才能对变量进行正确的初始化。详细的知识感觉自己也不是很懂。。。。反正就记住了,在使用Sess启动计算图之前,一定要构建完整的计算图,不能在会话里面再补充计算图。
tf.reset_default_graph()
def f1(xx):
w1=tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1),name="w1")
return tf.matmul(xx, w1)
def f2(aa):
w2=tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1),name="w2")
return tf.matmul(aa, w2)
x=tf.placeholder(tf.float32,shape=[None,2],name="x")
y=tf.placeholder(tf.float32,shape=[None,1],name="y")
a=f1(x)
y=f2(a)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
tmp=np.array([[0.7,0.9]])
print(sess.run(y,feed_dict={x:tmp}))
writer = tf.summary.FileWriter("logs", tf.get_default_graph())
writer.close()
这个时候还是不正确,不能正确输出,忽然发现y其实是结果,但是在上面的程序中我们将它当成了需要被赋值的placeholder,真是大错特错。
【错误提示】:
tf.reset_default_graph()
def f1(xx):
w1=tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1),name="w1")
return tf.matmul(xx, w1)
def f2(aa):
w2=tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1),name="w2")
return tf.matmul(aa, w2)
x=tf.placeholder(tf.float32,shape=[None,2],name="x")
#y=tf.placeholder(tf.float32,shape=[None,1],name="y")
a=f1(x)
y=f2(a)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
tmp=np.array([[0.7,0.9]])
print(sess.run(y,feed_dict={x:tmp}))
writer = tf.summary.FileWriter("logs", tf.get_default_graph())
writer.close()
输出:
[[3.957578]]
tensorboard图片:
如果添加上标识
tf.identity(y,"y")
,图片会变成:
小白一个,欢迎批评指正。