iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0

Introduction

自動編碼器(Autoencoders)是一種無監督學習人工神經網路。
使用機器學習的有損資料壓縮(lossy compression),目的是訓練出一套資料表示方法來表示一個資料集,經常被用於資料降維。

有損壓縮,因此當一段資訊被編碼並解碼還原,在該過程會丟失一些訊息,他不是真正的資料壓縮,而是應用在資料降噪和資料降維

Tasks

學習資源:
cntk\Tutorials\CNTK_105_Basic_Autoencoder_for_Dimensionality_Reduction.ipynb
訓練一個自動編碼器,將 MNIST 資料集壓縮成一個更小維度的向量,然後再保存成圖像。

快速模式:isFast設置為True。
我們對有限的數據進行更少的迭代或訓練。 這確保功能正確性,儘管產生的模型準確率並不高。

isFast = True

1.資料讀取(Data reading):

讀取本地端資料集。
cntk\Examples\Image\DataSets\MNIST

2.資料處理(Data preprocessing):

無。

3.建立模型(Model creation):簡單自動解碼器

MNIST 資料集的圖像是 28 * 28 像素,每個圖像都存在陣列中,輸入值就是 28 * 28 = 784。
設定壓縮後的數據大小是 32。
資料編碼後解碼,輸出的大小跟輸入的大小一樣。

input_dim = 784
encoding_dim = 32
output_dim = input_dim

宣告函式:create_model

def create_model(features):
    with C.layers.default_options(init = C.glorot_uniform()):
    
        # 輸入值歸一化成 0 ~ 1 之間
        encode = C.layers.Dense(encoding_dim, activation = C.relu)(features/255.0)
        decode = C.layers.Dense(input_dim, activation = C.sigmoid)(encode)

    return decode

Simple Autoencoder

3.建立模型(Model creation):深度自動解碼器

MNIST 資料集的圖像是 28 * 28 像素,每個圖像都存在陣列中,輸入值就是 28 * 28 = 784
編碼層的大小分別是128,64,32。
解碼層就分別是64,128。

input_dim = 784
encoding_dims = [128,64,32]
decoding_dims = [64,128]

encoded_model = None

宣告函式:

def create_deep_model(features):
    with C.layers.default_options(init = C.layers.glorot_uniform()):
        encode = C.element_times(C.constant(1.0/255.0), features)

        for encoding_dim in encoding_dims:
            encode = C.layers.Dense(encoding_dim, activation = C.relu)(encode)

        global encoded_model
        encoded_model= encode

        decode = encode
        for decoding_dim in decoding_dims:
            decode = C.layers.Dense(decoding_dim, activation = C.relu)(decode)

        decode = C.layers.Dense(input_dim, activation = C.sigmoid)(decode)
        return decode

Deep Autoencoder

4.訓練模型(Learning the model)

訓練模型

num_label_classes = 10
reader_train = create_reader(train_file, True, input_dim, num_label_classes)
reader_test = create_reader(test_file, False, input_dim, num_label_classes)

model, deep_ae_train_error, deep_ae_test_error = train_and_test(reader_train, reader_test, model_func = create_deep_model)

上一篇
時間序列
下一篇
長短期記憶
系列文
探索 Microsoft CNTK 機器學習工具30

尚未有邦友留言

立即登入留言