生活随笔
收集整理的這篇文章主要介紹了
Tensorflow实现MNIST数据自编码(2)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
對自編碼(1)進行改進,(1)中實現(xiàn)的網(wǎng)絡是用2個編碼層,2個解碼層,現(xiàn)在對它進行添加編碼層和解碼層分別為4層
原始數(shù)據(jù)784--》256--》64--》16--》2
??import?tensorflow?as?tf???from?tensorflow.examples.tutorials.mnist?import?input_data??mnist?=?input_data.read_data_sets('/data',one_hot=True)????learning_rate?=?0.01??n_hidden_1?=?256??n_hidden_2?=?64??n_hidden_3?=?16??n_hidden_4?=?2??n_input?=?784?????x?=?tf.placeholder('float',[None,n_input])??y?=?x????weights?=?{??????'encoder_h1':tf.Variable(tf.random_normal([n_input,n_hidden_1])),??????'encoder_h2':tf.Variable(tf.random_normal([n_hidden_1,n_hidden_2])),??????'encoder_h3':tf.Variable(tf.random_normal([n_hidden_2,n_hidden_3])),??????'encoder_h4':tf.Variable(tf.random_normal([n_hidden_3,n_hidden_4])),??????'decoder_h1':tf.Variable(tf.random_normal([n_hidden_4,n_hidden_3])),??????'decoder_h2':tf.Variable(tf.random_normal([n_hidden_3,n_hidden_2])),??????'decoder_h3':tf.Variable(tf.random_normal([n_hidden_2,n_hidden_1])),??????'decoder_h4':tf.Variable(tf.random_normal([n_hidden_1,n_input])),??}??biases?=?{??????'encoder_b1':tf.Variable(tf.zeros([n_hidden_1])),??????'encoder_b2':tf.Variable(tf.zeros([n_hidden_2])),??????'encoder_b3':tf.Variable(tf.zeros([n_hidden_3])),??????'encoder_b4':tf.Variable(tf.zeros([n_hidden_4])),??????'decoder_b1':tf.Variable(tf.zeros([n_hidden_3])),??????'decoder_b2':tf.Variable(tf.zeros([n_hidden_2])),??????'decoder_b3':tf.Variable(tf.zeros([n_hidden_1])),??????'decoder_b4':tf.Variable(tf.zeros([n_input])),??}??????def?encoder(x):??????layer_1?=?tf.nn.sigmoid(tf.add(tf.matmul(x,weights['encoder_h1']),biases['encoder_b1']))??????layer_2?=?tf.nn.sigmoid(tf.add(tf.matmul(layer_1,weights['encoder_h2']),biases['encoder_b2']))??????layer_3?=?tf.nn.sigmoid(tf.add(tf.matmul(layer_2,weights['encoder_h3']),biases['encoder_b3']))??????layer_4?=?tf.nn.sigmoid(tf.add(tf.matmul(layer_3,weights['encoder_h4']),biases['encoder_b4']))??????return?layer_4??def?decoder(x):??????layer_1?=?tf.nn.sigmoid(tf.add(tf.matmul(x,?weights['decoder_h1']),?biases['decoder_b1']))??????layer_2?=?tf.nn.sigmoid(tf.add(tf.matmul(layer_1,?weights['decoder_h2']),?biases['decoder_b2']))??????layer_3?=?tf.nn.sigmoid(tf.add(tf.matmul(layer_2,?weights['decoder_h3']),?biases['decoder_b3']))??????layer_4?=?tf.nn.sigmoid(tf.add(tf.matmul(layer_3,?weights['decoder_h4']),?biases['decoder_b4']))??????return?layer_4????y_pred?=?decoder(encoder(x))??print('y_pred',y_pred)????cost?=?tf.reduce_mean(tf.pow(y-y_pred,2))??optimizer?=?tf.train.AdamOptimizer(learning_rate).minimize(cost)????training_epochs?=?20??batch_size?=?256??display_step?=?1????with?tf.Session()?as?sess:??????tf.global_variables_initializer().run()??????total_batch?=?int(mnist.train.num_examples/batch_size)????????????for?epoch?in?range(training_epochs):????????????????????for?i?in?range(total_batch):??????????????batch_xs,batch_ys?=?mnist.train.next_batch(batch_size)??????????????_,c?=?sess.run([optimizer,cost],feed_dict={x:batch_xs})??????????if?epoch%display_step?==?0:??????????????print('Epoch:','%04d'%(epoch+1),'cost=','{:.9f}'.format(c))??????print('finished')??
總結
以上是生活随笔為你收集整理的Tensorflow实现MNIST数据自编码(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。