我试图通过查看模型对每批更新的图上的实际y值的预测来查看我的模型如何进行加班训练,我用Google搜索了它的完成方式和非常令人困惑的地方,最接近它的是在此处添加代码:
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中看到它而不是手动实现它?
谢谢!
答案 0 :(得分:0)
尝试通过以下方式使用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
回调对其进行绘制。
答案 1 :(得分:0)
这对我有用:
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))