keras - 保存和加载 keras 自动编码器
问题描述
看看这个奇怪的加载/保存模型情况。我保存了变分自动编码器模型及其编码器和解码器:
autoencoder.save("autoencoder_save", overwrite=True)
encoder.save("encoder_save", overwrite=True)
decoder.save("decoder_save", overwrite=T)
之后,我从磁盘加载了所有内容:
autoencoder_disk = load_model("autoencoder_save", custom_objects={'KLDivergenceLayer': KLDivergenceLayer,
'nll': nll})
encoder_disk = load_model("encoder_save", custom_objects={'KLDivergenceLayer': KLDivergenceLayer,
'nll': nll})
decoder_disk = load_model("decoder_save", custom_objects={'KLDivergenceLayer': KLDivergenceLayer,
'nll': nll})
如果我尝试
x_test_encoded = encoder_disk.predict(x_test,batch_size=batch_size)
x_test_decoded = decoder_disk.predict(x_test_encoded)
print(np.round(x_test_decoded[3]))
一切都很好,就像我使用内存中的编码器/解码器一样,但是如果我尝试
vae = autoencoder_disk.predict(x_test_encoded)
我有
ValueError: Error when checking model : the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s) but instead got the following list of 1 arrays:...
尽管我可以从内存中的变分自动编码器中进行预测。为什么自动编码器从磁盘加载时不起作用?
解决方案
您将编码的输出x_test_encoded
作为输入传递给 autoencoder autoencoder_disk.predict(x_test_encoded)
。您应该传递编码器期望的原始输入x_test
。
推荐阅读
- c++ - 关于 C++ 的 cin 和 >> 的问题
- python - Altair 中带有标签值的分层或 Facet 条形图
- python - 目标 WSGI 脚本无法作为 Python 模块 Flask 加载
- java - java FXML窗口在启动时没有响应
- javascript - fs.write 在两个 txt 文件中使用 nodejs
- sapui5 - 如何使用 SAPUI5 SDK?
- multithreading - 多线程套接字打开的文件太多
- javascript - v-如果不在模板上工作
- amazon-web-services - AWS Codebuild 未更新 S3 中的工件
- sql - 如何使用 CTE 按两个表分组