input date保存值_涛哥文集(36):R keras保存和还原模型
在訓練之后和訓練過程中都可以保存模型進度。 這意味著模型可以從中斷的地方繼續進行,避免了長時間的訓練。 保存還意味著您可以共享模型,而其他人可以重新創建您的作品。 在發布研究模型和技術時,大多數機器學習從業者分享:
- 創建模型的代碼,以及
- 模型的訓練權重或參數
共享這些數據可幫助其他人了解模型的工作原理,并使用新數據自己嘗試。
設定
我們將使用MNIST數據集來訓練我們的模型,以演示如何保存權重。 為了加快這些演示運行,僅使用前1000個示例:
library(keras)mnist % array_reshape(c(1000, 28 * 28))train_images % array_reshape(c(1000, 28 * 28))test_images定義模型
讓我們建立一個簡單的模型,以演示如何保存和加載權重。
# Returns a short sequential modelcreate_model % layer_dense(units = 512, activation = "relu", input_shape = 784) %>% layer_dropout(0.2) %>% layer_dense(units = 10, activation = "softmax") model %>% compile( optimizer = "adam", loss = "sparse_categorical_crossentropy", metrics = list("accuracy") ) model}model % summary()保存整個模型
保存Keras模型的習慣形式是保存為HDF5格式。
生成的文件包含權重值,模型的配置,甚至優化器的配置。 這使您可以保存模型并稍后從完全相同的狀態恢復訓練,而無需訪問原始代碼。
model % fit(train_images, train_labels, epochs = 5)model %>% save_model_hdf5("my_model.h5")如果您只想保存權重,則可以將最后一行替換為
model %>% save_model_weights_hdf5("my_model_weights.h5")現在從該文件重新創建模型:
new_model % summary()在訓練期間保存檢查點
在訓練期間和訓練結束時自動保存檢查點非常有用。這樣,您可以使用受過訓練的模型,而無需重新訓練它,也可以在您離開的地方進行訓練,以防訓練過程中斷。
callback_model_checkpoint是執行此任務的回調。
回調使用幾個參數來配置檢查點。默認情況下,save_weights_only設置為false,這意味著將保存完整的模型-包括體系結構和配置。然后,您可以按照上一段所述還原模型。
現在,讓我們集中討論僅保存和恢復權重。在以下代碼段中,我們將save_weights_only設置為true,因此在還原時需要模型定義。
filepath參數可以包含命名的格式選項,例如:如果文件路徑為權重。{epoch:02d}-{val_loss:.2f} .hdf5,則模型檢查點將與時期號一起保存,文件名中的驗證丟失。
保存的模型權重將再次為HDF5格式。
檢查點回調用法
訓練模型并將其傳遞給callback_model_checkpoint:
checkpoint_dir % fit( train_images, train_labels, epochs = 10, validation_data = list(test_images, test_labels), callbacks = list(cp_callback) # pass callback to training)檢查創建的文件:
list.files(checkpoint_dir)創建一個新的未經訓練的模型。 僅從權重還原模型時,必須具有與原始模型具有相同體系結構的模型。 由于它是相同的模型架構,因此盡管模型是不同的實例,我們仍可以共享權重。
現在重建一個新的,未經訓練的模型,并在測試集上對其進行評估。 未經訓練的模型將以機會級別(?10%的準確性)執行:
fresh_model % evaluate(test_images, test_labels)cat('Test loss:', score$loss, '')cat('Test accuracy:', score$acc, '')然后從最新的檢查點(第10步)加載權重,然后重新評估:
fresh_model %>% load_model_weights_hdf5( file.path(checkpoint_dir, "weights.10-0.42.hdf5"))score % evaluate(test_images, test_labels)cat('Test loss:', score$loss, '')cat('Test accuracy:', score$acc, '')為了減少文件數量,您還可以在第n個時間段僅保存一次模型權重。 例如,
checkpoint_dir % fit( train_images, train_labels, epochs = 10, validation_data = list(test_images, test_labels), callbacks = list(cp_callback) # pass callback to training)list.files(checkpoint_dir)另外,您也可以決定僅保存最佳模型,默認情況下,最佳模型定義為驗證損失。 有關更多信息,請參見callback_model_checkpoint的文檔。
checkpoint_dir % fit( train_images, train_labels, epochs = 10, validation_data = list(test_images, test_labels), callbacks = list(cp_callback) # pass callback to training)在這種情況下,權重在第6和第7個時期均已保存,但驗證損失沒有改善。
總結
以上是生活随笔為你收集整理的input date保存值_涛哥文集(36):R keras保存和还原模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka可视化工具_Kafka值得一用
- 下一篇: webp转换gif_右键转换文件格式