# -*- coding: utf-8 -*-
"""created on sun sep 3 13:48:19 2017
@author: piaodexin
"""
from __future__ import division, print_function, absolute_import
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt
import numpy as np
mnist=input_data.read_data_sets('e:\\mnist',one_hot=true)
'''定義輸入層 (28,28) =784
第一層隱含層500個
第二層100個
第三層500
輸出層784
這是因為自編碼就是希望神經網路自己學習特徵,然後再用學習到的特徵去組成原始,所以最後
輸出層是(28,28)=784
'''input_n=784
hidden1_n=500
hidden2_n=100
hidden3_n=500
output_n=784
learn_rate=0.01
batch_size=100
train_epoch=30000
x=tf.placeholder(tf.float32,[none,input_n])
y=tf.placeholder(tf.float32,[none,input_n])
weights1=tf.variable(tf.truncated_normal([input_n,hidden1_n],stddev=0.1))
bias1=tf.variable(tf.constant(0.1,shape=[hidden1_n]))
weights2=tf.variable(tf.truncated_normal([hidden1_n,hidden2_n],stddev=0.1))
bias2=tf.variable(tf.constant(0.1,shape=[hidden2_n]))
weights3=tf.variable(tf.truncated_normal([hidden2_n,hidden3_n],stddev=0.1))
bias3=tf.variable(tf.constant(0.1,shape=[hidden3_n]))
weights4=tf.variable(tf.truncated_normal([hidden3_n,output_n],stddev=0.1))
bias4=tf.variable(tf.constant(0.1,shape=[output_n]))
def get_result(x,weights1,bias1,weights2,bias2,weights3,bias3,weights4,bias4):
a1=tf.nn.sigmoid(tf.matmul(x,weights1)+bias1)
a2=tf.nn.sigmoid(tf.matmul(a1,weights2)+bias2)
a3=tf.nn.sigmoid(tf.matmul(a2,weights3)+bias3)
y_=tf.nn.sigmoid(tf.matmul(a3,weights4)+bias4)
return y_
'''當我一步一步求y_的時候,卻出現錯誤,只能用函式,不知道為什麼
深度自編碼器python實現
深度自編碼器的原理上一節已經講過,這次我們來看一下它的python 實現,這是基於mnist的自編碼實現。from future import division,print function,absolute import import tensorflow as tf import numpy a...
自編碼器(AutoEncoder
本文講述自編碼器 auto encoder,下文簡稱ae 將按照以下的思路展開講解,力圖使得初學者能看懂其中要義。目錄如下 1.ae的基本原理 2.ae的用途 3.基於mnist資料集的ae的簡單python實現 ae,是神經網路模型的一種,是一種全連線網路模型,而且進行無監督學習,下圖是簡單的ae...
自編碼器簡介
autoencoder,中文譯名自編碼器。主要用於特徵提取,可以理解為一種基於神經網路的壓縮 降維演算法,和pca等類似。自編碼器為一種有損壓縮演算法,通過壓縮 編碼 獲得資料等抽象特徵,並可以通過解壓縮 解碼 將抽象特徵盡可能地還原成原始資料。因此,根據原ppt中對自編碼器 學習使用者高度抽象的特...