python - 警告:tensorflow:已编译加载的模型,但尚未构建编译的指标
问题描述
我的模特——
from tensorflow.keras.layers import ReLU
from keras.layers import Dropout
from tensorflow.keras.utils import plot_model
from matplotlib import pyplot
# define encoder
visible = Input(shape=(n_inputs,))
# encoder level 1
e = Dense(300)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# encoder level 1
e = Dense(200)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# encoder level 1
e = Dense(100)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# encoder level 1
e = Dense(50)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# bottleneck
n_bottleneck = round(float(n_inputs))
bottleneck = Dense(n_bottleneck)(e)
# define decoder, level 1
# encoder level 1
d = Dense(50)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
d = Dense(100)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
d = Dense(200)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
d = Dense(300)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
# output layer
output = Dense(n_inputs, activation='sigmoid')(d)
# define autoencoder model
model = Model(inputs=visible, outputs=output)
# compile autoencoder model
model.compile(optimizer='adam', loss='binary_crossentropy')
# plot the autoencoder
plot_model(model, 'autoencoder_compress.png', show_shapes=True)
# fit the autoencoder model to reconstruct input
history = model.fit(X_train_norm, X_train_norm, epochs=100, batch_size=32, verbose=2, validation_data=(X_test_norm,X_test_norm))
# plot loss
pyplot.plot(history.history['loss'], label='train')
pyplot.plot(history.history['val_loss'], label='test')
pyplot.legend()
pyplot.show()
# define an encoder model (without the decoder)
encoder = Model(inputs=visible, outputs=bottleneck)
plot_model(encoder, 'encoder_compress.png', show_shapes=True)
# save the encoder to file
encoder.save('drive/MyDrive/encoder_rf.h5')
我收到这个错误-
WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.
该模型已被训练。
解决方案
encoder
只需在绘制之前编译新模型。
此代码不会发出警告:
from tensorflow.keras.layers import ReLU, Input, Dense
from keras.layers import Dropout
from tensorflow.keras.utils import plot_model
from matplotlib import pyplot
from tensorflow.keras.models import Model
n_inputs = 100
# define encoder
visible = Input(shape=(n_inputs,))
# encoder level 1
e = Dense(300)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# encoder level 1
e = Dense(200)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# encoder level 1
e = Dense(100)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# encoder level 1
e = Dense(50)(visible)
e = ReLU()(e)
e = Dropout(0.05)(e)
# bottleneck
n_bottleneck = round(float(n_inputs))
bottleneck = Dense(n_bottleneck)(e)
# define decoder, level 1
# encoder level 1
d = Dense(50)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
d = Dense(100)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
d = Dense(200)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
d = Dense(300)(bottleneck)
d = ReLU()(d)
d = Dropout(0.05)(d)
# output layer
output = Dense(n_inputs, activation='sigmoid')(d)
# define an encoder model (without the decoder)
encoder = Model(inputs=visible, outputs=bottleneck)
# Compile before plotting
encoder.compile(optimizer='adam', loss='binary_crossentropy')
plot_model(encoder, 'encoder_compress.png', show_shapes=True)
# save the encoder to file
encoder.save('drive/MyDrive/encoder_rf.h5')
推荐阅读
- javascript - 如何在 aspx 中显示来自 Ajax POST 请求的信息?
- mathematical-optimization - 我正在研究一个优化问题,我一直坚持使用矩阵计算距离
- powershell-3.0 - 在 Powershell 中使用 Invoke-RestMethod 时出错
- api - 在 Tyk 中为 API 创建版本会在转到 URL 时保留版本名称
- python - 使用模块中的类没有属性错误?
- reactjs - 为什么我写的一个 npm 模块在使用 create-react-app 创建项目后会安装这么多包?
- r - 如果 .. else if .. else 在 R 中循环
- android - FirebaseVisionImageMetadata 的 ImageReader 格式兼容性(通过 Android 上的 Camera2 API)
- loops - Julia 中的命名循环
- php - Eloquent 模型在批量插入时触发保存事件