自動編碼機的學習包括在隱藏層上對輸入訊號進行壓縮表示,然後在輸出層盡可能地復現原始輸入。
原始的自編碼器可以理解為資料簡單降維,而這個降維的處理過程比較特殊就是使用神經網路的方式來進行訓練網路權重引數和偏置,然後在再建造從獲得的壓縮表示中推斷原資料的差值來作為它訓練的乙個誤差。簡單的結構如:
注:此圖**,here.
每一層都是乙個神經網路中的全連線,也就是dense
層。
而,在解碼器通過學習重新推斷這個原始的的output
,這兩個部分之間的差值,常常作為我們訓練的優化目標,即下面這種形式:
然後,開始定義這個自編碼器的模型,完整**即:
# 簡單的定義為只有三層,即輸入層、隱藏層、輸出層
input_size =
len(images[1]
)hidden_size =
64output_size =
len(images[1]
)x = tf.keras.input(shape=
(len
(images[1]
),))
y = tf.keras.layers.dense(hidden_size, activation=
'relu'
)(x)
r = tf.keras.layers.dense(output_size, activation=
'sigmoid'
)(y)
# 完整的自編碼器
autoencoder = tf.keras.model(inputs=x, outputs=r)
autoencoder.
compile
(optimizer=
'adam'
, loss=
'mse'
, metrics=
"accuracy"
)epochs =
100batch_size =
128history = autoencoder.fit(images, images, batch_size=batch_size, epochs=epochs, verbose=1)
# 編碼
conv_encoder = tf.keras.model(x, y)
encoded_imgs = conv_encoder.predict(images)
n =10
plt.figure(figsize=(20
,8))
for i in
range
(n):
ax = plt.subplot(
1, n, i+1)
plt.imshow(encoded_imgs[i]
.reshape(4,
16).t) plt.gray(
) ax.get_xaxis(
).set_visible(
false
) ax.get_yaxis(
).set_visible(
false
)plt.show(
)# 解碼
decoded_imgs = autoencoder.predict(images)
n =10
plt.figure(figsize=(20
,6))
for i in
range
(n):
# display original
ax = plt.subplot(
3, n, i+1)
plt.imshow(images[i]
.reshape(28,
28)) plt.gray(
) ax.get_xaxis(
).set_visible(
false
) ax.get_yaxis(
).set_visible(
false
)# display reconstruction
ax = plt.subplot(
3, n, i+n+1)
plt.imshow(decoded_imgs[i]
.reshape(28,
28)) plt.gray(
) ax.get_xaxis(
).set_visible(
false
) ax.get_yaxis(
).set_visible(
false
)
plt.show(
)
上圖即是編碼的效果圖,下圖第一行是原始的,第二行是解碼後的:
自編碼器(AutoEncoder
本文講述自編碼器 auto encoder,下文簡稱ae 將按照以下的思路展開講解,力圖使得初學者能看懂其中要義。目錄如下 1.ae的基本原理 2.ae的用途 3.基於mnist資料集的ae的簡單python實現 ae,是神經網路模型的一種,是一種全連線網路模型,而且進行無監督學習,下圖是簡單的ae...
自編碼器簡介
autoencoder,中文譯名自編碼器。主要用於特徵提取,可以理解為一種基於神經網路的壓縮 降維演算法,和pca等類似。自編碼器為一種有損壓縮演算法,通過壓縮 編碼 獲得資料等抽象特徵,並可以通過解壓縮 解碼 將抽象特徵盡可能地還原成原始資料。因此,根據原ppt中對自編碼器 學習使用者高度抽象的特...
了解自編碼器
1.什麼是自編碼器?自動編碼器是一種無監督的機器學習演算法,該演算法將影象作為輸入並使用較少的位數來重建它。這聽起來像是影象壓縮,但是自動編碼器和通用影象壓縮演算法之間的最大區別在於,在自動編碼器的情況下,壓縮是通過學習訓練資料集來實現的。當影象類似於所使用的訓練集時,雖然可以實現合理的壓縮,但是自...