tensorflow - 如何固定编码器/解码器的神经元数量?
问题描述
我正在阅读教程: https ://blog.keras.io/building-autoencoders-in-keras.html
特别是在该Deep autoencoder
部分,代码不起作用。
encoding_dim = 32
input_img = Input(shape=(784,))
encoded = Dense(128, activation='relu')(input_img)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(32, activation='relu')(encoded)
decoded = Dense(64, activation='relu')(encoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(784, activation='sigmoid')(decoded)
autoencoder = Model(input_img, decoded)
print('autoencoder layers:', autoencoder.layers)
encoder = Model(input_img, encoded)
encoded_input = Input(shape = (encoding_dim,))
print('encoded_input', encoded_input)
decoder_layer = autoencoder.layers[-1]
print('decoder_layer:', autoencoder.layers[-1])
print('decoded:', decoder_layer(encoded_input))
decoder = Model(encoded_input, decoder_layer(encoded_input))
autoencoder.compile(optimizer = 'adadelta', loss = 'binary_crossentropy')
当我按原样运行代码时,我遇到了错误。
File "simple_sparsity_deep_autoencoder.py", line 68, in <module>
print('decoded:', decoder_layer(encoded_input))
File "C:\Users\sonogi-y\AppData\Local\Continuum\anaconda3\envs\textbook\lib\site-packages\keras\engine\base_layer.py", line 440, in __call__
self.assert_input_compatibility(inputs)
File "C:\Users\sonogi-y\AppData\Local\Continuum\anaconda3\envs\textbook\lib\site-packages\keras\engine\base_layer.py", line 352, in assert_input_compatibility
' but got shape ' + str(x_shape))
ValueError: Input 0 is incompatible with layer dense_6: expected axis -1 of input shape to have value 128 but got shape (None, 32)
我猜输入节点号与解码器层不匹配。我怎样才能解决这个问题?谢谢。
解决方案
推荐阅读
- javascript - 我是否必须为每个反应项目安装 npm
- google-apps-script - 在选定范围的右侧选择单元格或激活 - Google App Script
- deployment - 手动部署最小化的 Openlayers
- php - 将路由重定向到不同的控制器以获得相同的 url 模式?
- typescript - 为什么 TypeScript 会隐式地将 Uint8Array 转换为 Float32Array
- php - 如何将 Woocommerce 单个产品页面标题更改为真实产品标题?
- python - Python 嵌套生成器模拟无限数据
- javascript - 如何在离子中设置离子警报标题
- sql - 了解 ODBC SQL 语法 - 需要目录示例
- javascript - Nuxt 需要未找到资产中的图像