【发布时间】:2018-06-22 07:39:47
【问题描述】:
我正在使用带有张量流的 keras 来实现带有 CNN 的深度自动编码器:
所以基本上模型类似于:
input_data = Input(shape=(40,500,1))
#encoder
x= Conv2D(32,kernel_size=(3,3), padding="same",activation='linear')(input_data)
encoded= Conv2D(15,kernel_size=(1,2), strides=(1,2), padding="same",activation='linear')(x)
#decoder
x= Conv2DTranspose(15,kernel_size=(1,2), padding="same",activation='linear')(encoded)
x= Conv2DTranspose(32,kernel_size=(3,3), padding="same",activation='linear')(x)
decoded = Conv2DTranspose(1, (3, 3), activation=activationfuntion, padding="same")(x)
autoencoder = Model(inputs=input_data,outputs=decoded)
encoder = Model(inputs=input_data,outputs=encoded)
为了在训练时保存最好的模型权重,我使用的是ModelCheckpoint:
autoencoder.compile(loss='mean_squared_error', optimizer='rmsprop');
checkpoint=ModelCheckpoint('bestweight.best.hdf5',monitor='val_loss',verbose=1,save_best_only=True,mode='min');
callbacks_list=[checkpoint]
history_info =autoencoder.fit(x_train, x_train,
batch_size=batch_size,
epochs=50,
validation_data=(x_validation,x_validation),
callbacks=callbacks_list,
shuffle=True)
然后在测试数据集上进行测试:
autoencoder.load_weights('bestweight.best.hdf5');
autoencoder.predict(test_data);
我的问题是:
我知道如何保存整个自动编码器的最佳权重,但是有没有办法只保存 编码器 部分的最佳训练权重,以便我以后可以使用它进行测试。 所以我可以这样使用它:
encoder.load_weights('encoderbestweight.best.hdf5');
encoder.predict(test_data);
【问题讨论】:
标签: python tensorflow keras autoencoder