[英]How to interpret what sess.run() is doing?
我正在练习Gatys等人的神经风格转移算法。 (2015)( https://arxiv.org/abs/1508.06576 )使用tensorflow。 在这里,我很难理解sess.run()
正在做什么,这在代码中出现了几次。
如本文所示,必须分别使用输入内容图像和输入样式图像来计算生成的图像。
首先计算内容成本,
tf.reset_default_graph()
sess = tf.InteractiveSession()
# load the weights of vgg to form a model
model = load_vgg_model("imagenet-vgg-verydeep-19.mat")
sess.run(model['input'].assign(content_image))
out = model['conv4_2']
a_Content = sess.run(out)
a_Generate = out
# Compute the content cost
J_content = compute_content_cost(a_Content, a_Generate)
为简单起见,省略了J_style
的计算
接着,
J = total_cost(J_content, J_style, alpha=10, beta=40)
optimizer = tf.train.AdamOptimizer(2.0)
train_step = optimizer.minimize(J)
然后定义model_nn(),
def model_nn(sess, input_image, num_iterations = 200):
sess.run(tf.global_variables_initializer())
model['input'].assign(input_image)
for i in range(num_iterations):
sess.run(train_step)
generated_image = sess.run(model['input'])
if i%20 == 0:
Jt, Jc, Js = sess.run([J, J_content, J_style])
最后,运行model_nn()来训练网络model_nn(sess, generated_image)
这是我的问题
首先 , sess.run(out)
和out
之间有什么区别?
第二 ,为什么model['input'].assign(content_image)
放在sess.run(model['input'].assign(content_image))
中,但是在sess.run()
稍后与model_nn()
分开?
第三 ,如何指定sess.run(model['input'])
生成generated_image?
如果有任何歧义,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.