gpt4 book ai didi

python - tensorflow :函数内变量的初始化

转载 作者:行者123 更新时间:2023-11-30 08:59:42 24 4
gpt4 key购买 nike

Newbee 到 tensorflow 。我正在尝试使用以下代码编写一些简单的网络:

import tensorflow as tf 
import tensorflow.contrib as tfc
import tensorflow.contrib.layers as tfcl

def generator_deconv(z, kernel):
with tf.variable_scope("generator", reuse=True):
weights = tf.get_variable("weights")
biases = tf.get_variable("biases")
result = tf.matmul(z, weights)
result = tf.add(result, biases)
result = tf.reshape(result, tf.stack([tf.shape(result)[0],13,4,1]))
result = tf.nn.conv2d_transpose(result, kernel,
output_shape=[tf.shape(result)[0],25,8,1],
strides=[1,2,2,1],
padding="SAME")
result = tf.nn.conv2d_transpose(result, kernel,
output_shape=[tf.shape(result)[0],50,15,1],
strides=[1,2,2,1],
padding="SAME")
result = tf.nn.conv2d_transpose(result, kernel,
output_shape=[tf.shape(result)[0],100,30,1],
strides=[1,2,2,1],
padding="SAME")
return result

kernel = tf.constant(1.0, shape=[4,4,1,1])
protype = tf.constant(1.0, shape=[3,4])
init = tf.global_variables_initializer()

config = tf.ConfigProto()
config.gpu_options.allocator_type = 'BFC'
config.gpu_options.allow_growth=True

with tf.variable_scope("generator"):
t1 = tf.get_variable("weights",shape=[4,52])
t2 = tf.get_variable("biases", shape=[52])

test = generator_deconv(protype,kernel)

with tf.Session(config=config) as sess:
sess.run(init)
sess.run(tf.shape(t1))
sess.run(tf.shape(t2))
sess.run(tf.shape(test))

但出现错误:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value generator/weights

对于最后一行

sess.run(tf.shape(test))

查了tensorflow官方api,还是不知道代码哪里出了问题。

==================================更新============== ===========

找到了两种修复方法

1.如果替换

sess.run(init)

sess.run(tf.global_variables_initializer())

然后整个代码就可以工作了。

或者

2.运行

init = tf.global_variables_initializer()
with tf.Session(config=config) as sess:
sess.run(init)
sess.run(tf.shape(t1))
sess.run(tf.shape(t2))
sess.run(tf.shape(test))

同样,它也有效。

但不明白为什么

最佳答案

我为您删除了部分代码:

init = tf.global_variables_initializer()

with tf.variable_scope("generator"):
t1 = tf.get_variable("weights",shape=[4,52])
t2 = tf.get_variable("biases", shape=[52])

with tf.Session(config=config) as sess:
sess.run(init)
sess.run(tf.shape(t1))

保存调用 global_variables_initializer() 的结果后,可以将变量添加到图表中。在您的修复中,您在将要初始化的所有变量添加到图形中之后调用此函数,因此所有内容都已初始化。

希望这有帮助!

关于python - tensorflow :函数内变量的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45316382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com