簡體   English   中英

訓練時實時繪制模型預測

[英]Real time plotting the model predictions while training

我試圖通過查看每批更新的圖上的實際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中看到它而不是手動實現它?

謝謝!

嘗試通過以下方式使用matplotlib qt后端:

%matplotlib qt

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

from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'qt')

然后使用ax = plt.axes()創建全局axe對象,最后使用它繪制繪圖:

def plot_stuff():
   ax.clear()
   x = np.linspace(-10, 10, 50)
   ax.plot(x, np.sin(x))

而且,如果要繪制預測值,則可以創建一些自定義指標功能,這些功能將僅返回y_truey_pred值。 並使用TensorBoard回調進行繪制。

這為我工作:

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM