Re: [問題] keras自編碼
先前推文寫太簡短
底下寫我認為可能的解法
簡單來說:
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://www.ptt.cc/bbs/DataScience/M.1544278100.A.8D2.html
推
12/10 09:48,
6年前
, 1F
12/10 09:48, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
3
7
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章