作者tea596933 (优良)
看板DataScience
标题Re: [问题] keras自编码
时间Sat Dec 8 22:08:18 2018
先前推文写太简短
底下写我认为可能的解法
简单来说:
Step 1. 独立定义decoder的每个layer
Step 2. 让auto encoder跟decoder共用Step 1.的decoder layer
这样做可以共享auto encoder训练好的权重给decoder
※ 引述《nqj (黑猫)》之铭言:
: input_img = Input(shape=(784,))
: code = Input(shape=(2,))
这行改成
code_input = Input(shape=(encoding_dim,))
改的原因是因为要跟後面的
code区隔开来
(原文读下来2应该就是encoding_dim,如果不是再改回2)
: # encode layers
: encoded = Dense(128, activation='relu')(input_img)
: encoded = Dense(16, activation='relu')(encoded)
: encoded = Dense(10, activation='relu')(encoded)
: code = Dense(encoding_dim)(encoded)
: # decode layers
Step 1. 独立定义decoder的每个layer
decoder_layer_1 = Dense(10, activation='relu')
decoder_layer_2 = Dense(16, activation='relu')
decoder_layer_3 = Dense(128, activation='relu')
decoder_layer_4 = Dense(784, activation='tanh')
Step 2. 让auto encoder跟decoder共用Step 1.的decoder layer
# 定义 auto encoder
decoded = decoder_layer_1(
code)
decoded = decoder_layer_2(decoded)
decoded = decoder_layer_3(decoded)
decoded = decoder_layer_4(decoded)
: autoencoder = Model(inputs=input_img, outputs=decoded)
: encoder = Model(inputs=input_img, outputs=code)
# 定义 decoder
x = decoder_layer_1(
code_input)
x = decoder_layer_2(x)
x = decoder_layer_3(x)
x = decoder_layer_4(x)
decoder = Model(inputs=code_input, outputs=x)
定义完毕,先训练好autoencoder之後
decoder也跟着完成了
如果有误再请各位指正
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.240.13.94
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1544278100.A.8D2.html
1F:推 nqj: 成功了,非常感谢!! 12/10 09:48