为了账号安全,请及时绑定邮箱和手机立即绑定

在训练时实时绘制模型预测

在训练时实时绘制模型预测

胡说叔叔 2021-11-16 15:27:04
我试图通过查看它对每个批次更新的图上实际 y 值的预测来查看我的模型如何进行加班训练,我用谷歌搜索了它是如何完成的并且非常令人困惑,我让它最接近工作的是这里添加的代码:def cb(x, y_true):    def _(batch, logs):        s,e=batch*batch_size,(batch+1)*batch_size        y_pred = model.predict(            x[s:e],            batch_size=batch_size        )        plt.clf()        plt.plot(y_true[s:e], label='true')        plt.plot(y_pred, label='pred')        plt.legend()        plt.show()    return _cb_plot=keras.callbacks.LambdaCallback(on_batch_end=cb(train_X,train_y))这样做的问题是我每次都需要手动关闭图形才能继续训练,因为它show被阻塞了。我尝试使用block=False并尝试启用交互式使用,ion但这让我进入了一个空的白色无响应图形窗口。任何人都知道这里需要更改什么才能使其正常工作?顺便说一句,我没有看到 TensorBoard 可以向您展示模型通过训练所做的预测与实际 y 值相比,是否有可能在 tensorboard 中看到它而不是手动实现它?
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

尝试使用 matplotlib qt 后端:


%matplotlib qt

或者如果您正在运行 .py 文件


from IPython import get_ipython

get_ipython().run_line_magic('matplotlib', 'qt')

然后创建全局axe对象ax = plt.axes() 并最终使用它来绘制您的图:


def plot_stuff():

   ax.clear()

   x = np.linspace(-10, 10, 50)

   ax.plot(x, np.sin(x))

如果您想绘制预测值,您可以创建一些自定义指标功能,这些功能将简单地返回y_true或y_pred值。并使用TensorBoard回调来绘制它。


查看完整回答
反对 回复 2021-11-16
?
浮云间

TA贡献1829条经验 获得超4个赞

这对我有用:


plt.show(block=False)

进而


def cb(x, y_true):

    def _(batch, logs):

        s,e=batch*batch_size,(batch+1)*batch_size

        y_pred = model.predict(

            x[s:e],

            batch_size=batch_size

        )

        plt.clf()

        plt.plot(y_true[s:e], label='true')

        plt.plot(y_pred, label='pred')

        plt.axis([0, batch_size, -1, 1])

        plt.legend()

        plt.draw()

        plt.pause(0.0001)

    return _

cb_plot=keras.callbacks.LambdaCallback(on_batch_end=cb(train_X,train_y))


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信