from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model
input_img = Input(shape=(784,))
encoded = Dense(128, activation='relu')(input_img)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(32, activation='relu', name='encoder_output')(encoded)
decoded = Dense(64, activation='relu', name='decoder_input')(encoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(784, activation='sigmoid')(decoded)
autoencoder = Model(input_img, decoded)
decoder = Model(inputs=autoencoder.get_layer('decoder_input').input,outputs=autoencoder.output)
运行此代码后,我收到此错误 . 我想要做的是从自动编码器中提取解码器 .
我看到here,他们用图层的索引提取它 . 但我不知道索引 .
decoder_input = Input(shape=(encoding_dim,))
decoder = Model(decoder_input, autoencoder.layers[-1](decoder_input))
1 回答
我不确定这些示例的来源,但是解剖API来创建这些模型并不是预期的用途 . 如果您查看库作者的blog post,最好将编码器和解码器分开:
关键是
Model
只是另一层,实际上它继承自Layer
类 . 因此,您可以创建较小的模型,然后像层一样使用它们 .