日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tensorflow实现MNIST数据自编码(1)

發布時間:2025/4/5 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tensorflow实现MNIST数据自编码(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自編碼網絡能夠自學習樣本特征的網絡,屬于無監督學習模型的網絡,可以從無標注的數據中學習特征,它可以給出比原始數據更好的特征描述,具有較強的特征學習能力。

主要的網絡結構就是高維特征樣本---》編碼成---》低維特征---》解碼回---》高維特征,下面以MNIST數據集為示例進行演示:

  • import?tensorflow?as?tf??
  • ??
  • #導入數據集合??
  • from?tensorflow.examples.tutorials.mnist?import?input_data??
  • mnist?=?input_data.read_data_sets('/data/',one_hot=True)??
  • ??
  • #整體流程,原始圖片像素28*28-784??
  • #784-》256-》128-》128-》256-》784??
  • ??
  • learning_rate?=?0.01??
  • n_hidden_1?=?256?????#第一層256個結點??
  • n_hidden_2?=?128?????#第二層128個結點??
  • 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])),??
  • ????'decoder_h1':tf.Variable(tf.random_normal([n_hidden_2,n_hidden_1])),??
  • ????'decoder_h2':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])),??
  • ????'decoder_b1':tf.Variable(tf.zeros([n_hidden_1])),??
  • ????'decoder_b2':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']))??
  • ????return?layer_2??
  • 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']))??
  • ????return?layer_2??
  • ??
  • pred?=?decoder(encoder(x))??
  • cost?=?tf.reduce_mean(tf.pow(y-pred,2))??
  • optimizer?=?tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)??
  • ??
  • training_epochs?=?20??#共迭代20次??
  • batch_size?=?256??????#每次取256個樣本??
  • display_step?=?5??????#迭代5次輸出一次信息??
  • ??
  • #啟動會話??
  • with?tf.Session()?as?sess:??
  • ????sess.run(tf.global_variables_initializer())??
  • ????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:",'%4d'?%?(epoch+1),'cost=',"{:.9f}".format(c))??
  • ????print('Training?Finished!')??
  • ??
  • ????correct_prediction?=?tf.equal(tf.argmax(pred,1),tf.argmax(y,1))??
  • ????accuracy?=?tf.reduce_mean(tf.cast(correct_prediction,'float'))??
  • ????print('Accuracy:',1-accuracy.eval({x:mnist.test.images,y:mnist.test.images}))??

  • 總結

    以上是生活随笔為你收集整理的Tensorflow实现MNIST数据自编码(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。