【发布时间】:2018-05-20 08:05:52
【问题描述】:
我是张量板的新手。我在使用它时遇到了一些问题。
问题一:
我正在编写一个对抗性学习模型。为了可视化模型的损失,我有以下损失,
actor losscritic loss
对于this paper中提供的学习算法, 在一个(或 K)批次中,我必须同时喂给演员和评论家。然后我只需要为评论家提供价值。这次没有演员。我认为,要在 tensorboard 中显示价值,我需要进行以下操作,
def model():
...
actor_loss = ...
tf.summary.scalar('actor', actor_loss)
...
critic_loss = ...
tf.summary.scalar('critic', critic_loss)
my_graph = tf.Graph()
with my_graph.as_default():
tf.reset_default_graph()
sess = tf.Session()
with sess.as_default():
model()
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter(address+ '/train',
sess.graph)
init = tf.global_variables_initializer()
sess.run(init)
现在在向 inner_loop (演员和评论家都参与)提供输入时没有问题,我们通过以下方式得到结果,
a,b,c,d,summary = sess.run( [actor_train_step, critic_train_step, actor_loss, critic_loss, merged], feed_dict = feed_dict )
writer.add_summary(summary, batch)
但是当我们只想给评论家提供输入时,代码就变成了以下,
a,b,summary = sess.run( [critic_train_step, critic_loss, merged], feed_dict = feed_dict )
writer.add_summary(summary, batch)
但由于merged 依赖于actor_loss,它无法运行。另一方面,我不能只将演员的价值提供给模型。如何解决这个问题?
问题 2
我不是通过张量运算来评估(计算分值)模型。实际上,我生成输出并将输出提供给另一个脚本并从那里获得分数值。因此,在每个批次/时期之后,我都在评估我的模型并从脚本中获得一个分值。如何将此值保存到张量板?
我无法在会话初始化之前正式化 tf.summary.merge_all() 操作,因为我正在从外部脚本计算训练时的评估得分值。
tf.summary.merge_all()操作应该放在哪里?
现在,如果我想将问题 1 和问题 2 合并到一个项目中,我需要做些什么新的事情吗?
注意:我是张量板的新手。所以如果你能给出详细的解释就更好了。
【问题讨论】:
标签: tensorflow merge tensorboard summary