去噪自動編碼器

2022-09-08 06:48:07 字數 3294 閱讀 1370

強制自動編碼器學習有用特徵的另一種方法是向其輸入中新增雜訊,訓練它來恢復原始的無雜訊輸入。這個想法自2023年代開始就存在(在yann lecun 2023年的碩士**中提到過)。在2023年的**中,pascal vincent等人表明自動編碼器也可以用於特徵提取。在2023年的**中,vincent等人提出了堆疊式去噪自動編碼器

雜訊可以是新增到輸入的純高斯雜訊,也可以是隨機關閉的輸入

實現很簡單,在編碼器的輸入中附加乙個dropout層(或者使用gaussiannoise層)。dropout層和gasussiannoise層僅在訓練期間處於啟用狀態

from tensorflow import keras

fashion_mnist = keras.datasets.fashion_mnist

(x_train_all, y_train_all), (x_test, y_test) = fashion_mnist.load_data()

x_valid, x_train = x_train_all[:5000] / 255., x_train_all[5000:] / 255.

y_valid, y_train = y_train_all[:5000], y_train_all[5000:]

dropout_encoder = keras.models.sequential([

keras.layers.flatten(input_shape=[28, 28]),

keras.layers.dropout(.5),

keras.layers.dense(100, activation='gelu'),

keras.layers.dense(30, activation='gelu')

])dropout_decoder = keras.models.sequential([

keras.layers.dense(100, activation='gelu', input_shape=[30]),

keras.layers.dense(28 * 28, activation='sigmoid'),

keras.layers.reshape([28, 28])

])dropout_ae = keras.models.sequential([dropout_encoder, dropout_decoder])

dropout_ae.compile(loss='binary_crossentropy', optimizer=keras.optimizers.adam())

history = dropout_ae.fit(x_train, x_train, validation_data=(x_valid, x_valid), batch_size=32, epochs=10)

epoch 1/10

1719/1719 [******************************] - 7s 3ms/step - loss: 0.3260 - val_loss: 0.2988

epoch 2/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.3027 - val_loss: 0.2921

epoch 3/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2982 - val_loss: 0.2891

epoch 4/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2957 - val_loss: 0.2867

epoch 5/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2940 - val_loss: 0.2854

epoch 6/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2928 - val_loss: 0.2842

epoch 7/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2918 - val_loss: 0.2831

epoch 8/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2911 - val_loss: 0.2825

epoch 9/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2905 - val_loss: 0.2818

epoch 10/10

1719/1719 [******************************] - 5s 3ms/step - loss: 0.2899 - val_loss: 0.2815

去噪自動編碼器不僅可以用於資料視覺化或無監督學習,而且還可以非常簡單有效地用於影象中的雜訊去除

自動編碼器

自動編碼器基本概念 自動編碼器 autoencoder 是神經網路的一種,一般來講自動編碼器包括兩部分 編碼器和解碼器,編碼器和解碼器相互串聯合作,實現資料的降維或特徵學習,現在也廣泛用於生成模型中.在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣的初始值.左側為encode...

自動編碼器(Autoencoder)

autoencoder是一種無監督的學習演算法,主要用於資料的降維或者特徵的抽取,在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣 w 的初始值。神經網路中的權重矩陣 w可看作是對輸入的資料進行特徵轉換,即先將資料編碼為另一種形式,然後在此基礎上進行一系列學習。然而,在對權重...

自動編碼器(Autoencoder)

autoencoder是一種無監督的學習演算法,主要用於資料的降維或者特徵的抽取,在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣w的初始值。或參考 自動編碼器 autoencoder 對於多層神經網路的引數初始化問題,我們可以依次對每一層進行autoencoder。如下圖所...