Kerasの研究では、2つのノート:ローカルモデルを保存し、ローカルモデルを呼び出します

深い学習モデルを使用する場合は、確かに、必要に応じて直接呼び出し、何の再訓練訓練を受けたモデルの下で保存されることを願っていません

まず、ローカルにモデルを保存

オートエンコーダの例では、データセットのノイズ除去mnist。追加:

FILE_PATH = " MNIST_data /重み-improvement- {エポック:02D} - {val_loss:.2f} .hdf5 " 

tensorboard = TensorBoard(LOG_DIR = ' / TMP / TB '、histogram_freq = 0、write_graph = False)が チェックポイント = ModelCheckpoint(ファイルパス= FILE_PATH、冗長= 1、モニター= ' val_loss '、save_weights_only = Falseを、モード= ' オート' save_best_only =真、期間= 1
autoencoder.fit(x_train_noisy、x_train、 エポック
= 100 BATCH_SIZE = 128 シャッフル =真、 validation_data = (x_test_noisy、x_test)、 コールバック = [チェックポイント、tensorboard])

ここでtensorboardとチェックポイントです

1、tensorboard視覚化ツールを有効にする、端末は新しいtensorboardを使用  - -logdir = / TMP / TBコマンド

2、次のように、時にリフトモデル時間を節約し、パラメータがval_lossを観察するように設定されているModelCheckpoint MNIST_data /フォルダを、保存します

 

第二に、モデルはローカルから読み込まれます

モデルの仮定を読んだ後に3枚の写真を使用して実験をノイズ除去ん:( pic_numを変更)

import os
import numpy as np
from warnings import simplefilter
simplefilter(action='ignore', category=FutureWarning)
import matplotlib.pyplot as plt
from keras.models import Model,Sequential,load_model
from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D
from keras.preprocessing.image import ImageDataGenerator,img_to_array, load_img
from keras.callbacks import TensorBoard , ModelCheckpoint
print("_________________________keras start_____________________________")
pic_num = 3
base_dir = 'MNIST_data' #基准目录
train_dir = os.path.join(base_dir,'my_test') #train目录
validation_dir="".join(train_dir)
test_datagen = ImageDataGenerator(rescale= 1./255)
validation_generator  = test_datagen.flow_from_directory(validation_dir,
                                                    target_size = (28,28),
                                                    color_mode = "grayscale",
                                                    batch_size = pic_num,
                                                    class_mode =  "categorical")#利用test_datagen.flow_from_directory(图像地址,目标size,批量数目,标签分类情况)
for x_train,batch_labels in validation_generator:
    break
x_train = np.reshape(x_train, (len(x_train), 28, 28, 1))
y_train = x_train

# create model
model = load_model('MNIST_data/my_model.hdf5')
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print("Created model and loaded weights from file")

# estimate accuracy on whole dataset using loaded weights
y_train=model.predict(x_train)

n = pic_num
for i in range(n):
    ax = plt.subplot(2, n, i+1)
    plt.imshow(x_train[i].reshape(28, 28))
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
    ax = plt.subplot(2, n, i+1+n)
    plt.imshow(y_train[i].reshape(28, 28))
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
plt.show()

迭代67次效果:

おすすめ

転載: www.cnblogs.com/dzzy/p/11387645.html