如何解决通过占位符在 TensorBoard 中显示 matplotlib 图
正如标题所暗示的,我想执行以下操作(伪代码,不使用急切执行):
def create_image_for_summary(data_ph):
xdata = ...
fig = plt.figure()
plt.plot(xdata,data_ph[...])
buf = io.BytesIO()
plt.savefig(buf,format='png')
plt.close(fig)
buf.seek(0)
image = tf.image.decode_png(buf.getvalue(),channels=4)
image = tf.expand_dims(image,0)
return image
data_ph = tf.placeholder(tf.float32,...)
with tf.variable_scope('Scope'):
im_summ = tf.summary.image('Name',create_image_for_summary(data_ph))
其中 data_ph
是张量数据的占位符。
但是,我总是得到:
AttributeError: 'Tensor' object has no attribute 'ndim'
这表明 matplotlib 不能接收张量作为输入。当用实际的 data_ph
数组替换 numpy
时,同样的代码也能工作,但是这有像 this question 那样显示的不便,因为每次都必须创建一个新的摘要条目,通过:
summary_images = tf.summary.merge([im_summ])
summ_images = self.sess.run(summary_images)
train_writer.add_summary(summ_images,<some step number>)
请注意,在考虑占位符时,上述更改为:
summary_images = tf.summary.merge([im_summ])
summ_images = self.sess.run(summary_images,feed_dict={self.data_ph: <some input tensor>})
train_writer.add_summary(summ_images,<some step number>)
有人知道允许将 matplotlib 与张量混合的机制吗?很遗憾,我无法安装 this related question 中提到的软件包,因为我在远程服务器上并且没有安装权限。
最后,请注意可用的文档here仅涵盖从一开始就将数据加载到内存的情况;我改为分批处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。