input date保存值_涛哥文集(36):R keras保存和还原模型
在訓(xùn)練之后和訓(xùn)練過程中都可以保存模型進(jìn)度。 這意味著模型可以從中斷的地方繼續(xù)進(jìn)行,避免了長(zhǎng)時(shí)間的訓(xùn)練。 保存還意味著您可以共享模型,而其他人可以重新創(chuàng)建您的作品。 在發(fā)布研究模型和技術(shù)時(shí),大多數(shù)機(jī)器學(xué)習(xí)從業(yè)者分享:
- 創(chuàng)建模型的代碼,以及
- 模型的訓(xùn)練權(quán)重或參數(shù)
共享這些數(shù)據(jù)可幫助其他人了解模型的工作原理,并使用新數(shù)據(jù)自己嘗試。
設(shè)定
我們將使用MNIST數(shù)據(jù)集來訓(xùn)練我們的模型,以演示如何保存權(quán)重。 為了加快這些演示運(yùn)行,僅使用前1000個(gè)示例:
library(keras)mnist % array_reshape(c(1000, 28 * 28))train_images % array_reshape(c(1000, 28 * 28))test_images定義模型
讓我們建立一個(gè)簡(jiǎn)單的模型,以演示如何保存和加載權(quán)重。
# 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()保存整個(gè)模型
保存Keras模型的習(xí)慣形式是保存為HDF5格式。
生成的文件包含權(quán)重值,模型的配置,甚至優(yōu)化器的配置。 這使您可以保存模型并稍后從完全相同的狀態(tài)恢復(fù)訓(xùn)練,而無需訪問原始代碼。
model % fit(train_images, train_labels, epochs = 5)model %>% save_model_hdf5("my_model.h5")如果您只想保存權(quán)重,則可以將最后一行替換為
model %>% save_model_weights_hdf5("my_model_weights.h5")現(xiàn)在從該文件重新創(chuàng)建模型:
new_model % summary()在訓(xùn)練期間保存檢查點(diǎn)
在訓(xùn)練期間和訓(xùn)練結(jié)束時(shí)自動(dòng)保存檢查點(diǎn)非常有用。這樣,您可以使用受過訓(xùn)練的模型,而無需重新訓(xùn)練它,也可以在您離開的地方進(jìn)行訓(xùn)練,以防訓(xùn)練過程中斷。
callback_model_checkpoint是執(zhí)行此任務(wù)的回調(diào)。
回調(diào)使用幾個(gè)參數(shù)來配置檢查點(diǎn)。默認(rèn)情況下,save_weights_only設(shè)置為false,這意味著將保存完整的模型-包括體系結(jié)構(gòu)和配置。然后,您可以按照上一段所述還原模型。
現(xiàn)在,讓我們集中討論僅保存和恢復(fù)權(quán)重。在以下代碼段中,我們將save_weights_only設(shè)置為true,因此在還原時(shí)需要模型定義。
filepath參數(shù)可以包含命名的格式選項(xiàng),例如:如果文件路徑為權(quán)重。{epoch:02d}-{val_loss:.2f} .hdf5,則模型檢查點(diǎn)將與時(shí)期號(hào)一起保存,文件名中的驗(yàn)證丟失。
保存的模型權(quán)重將再次為HDF5格式。
檢查點(diǎn)回調(diào)用法
訓(xùn)練模型并將其傳遞給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)檢查創(chuàng)建的文件:
list.files(checkpoint_dir)創(chuàng)建一個(gè)新的未經(jīng)訓(xùn)練的模型。 僅從權(quán)重還原模型時(shí),必須具有與原始模型具有相同體系結(jié)構(gòu)的模型。 由于它是相同的模型架構(gòu),因此盡管模型是不同的實(shí)例,我們?nèi)钥梢怨蚕頇?quán)重。
現(xiàn)在重建一個(gè)新的,未經(jīng)訓(xùn)練的模型,并在測(cè)試集上對(duì)其進(jìn)行評(píng)估。 未經(jīng)訓(xùn)練的模型將以機(jī)會(huì)級(jí)別(?10%的準(zhǔn)確性)執(zhí)行:
fresh_model % evaluate(test_images, test_labels)cat('Test loss:', score$loss, '')cat('Test accuracy:', score$acc, '')然后從最新的檢查點(diǎn)(第10步)加載權(quán)重,然后重新評(píng)估:
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, '')為了減少文件數(shù)量,您還可以在第n個(gè)時(shí)間段僅保存一次模型權(quá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)另外,您也可以決定僅保存最佳模型,默認(rèn)情況下,最佳模型定義為驗(yàn)證損失。 有關(guān)更多信息,請(qǐng)參見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)在這種情況下,權(quán)重在第6和第7個(gè)時(shí)期均已保存,但驗(yàn)證損失沒有改善。
總結(jié)
以上是生活随笔為你收集整理的input date保存值_涛哥文集(36):R keras保存和还原模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka可视化工具_Kafka值得一用
- 下一篇: python xlrd xlwt pan