首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:tensorflow:编译了加载的模型,但编译的指标尚未构建

警告:tensorflow:编译了加载的模型,但编译的指标尚未构建
EN

Stack Overflow用户
提问于 2021-06-14 20:39:50
回答 2查看 3.3K关注 0票数 1

我的模型-

代码语言:javascript
复制
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')

我得到了这个错误-

代码语言:javascript
复制
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.

该模型已经过训练。

EN

回答 2

Stack Overflow用户

发布于 2021-09-20 09:46:19

只需在绘制之前编译新的encoder模型即可。

此代码不会给出警告:

代码语言:javascript
复制
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')
票数 1
EN

Stack Overflow用户

发布于 2021-08-11 10:37:07

在您的代码中,model.compiled_metrics为None,请检查以下内容

代码语言:javascript
复制
model.compiled_metrics == None

您已经定义了一个没有权重的新编码器实例,并从您的模型更新了权重。训练后保存编码器。

您的代码中没有encoder-decoder

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67970389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档