最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用tensorflow實現(xiàn)VGG網(wǎng)絡,訓練mnist數(shù)據(jù)集方式

 更新時間:2020年05月26日 11:37:40   作者:masterjames  
這篇文章主要介紹了使用tensorflow實現(xiàn)VGG網(wǎng)絡,訓練mnist數(shù)據(jù)集方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

VGG作為流行的幾個模型之一,訓練圖形數(shù)據(jù)效果不錯,在mnist數(shù)據(jù)集是常用的入門集數(shù)據(jù),VGG層數(shù)非常多,如果嚴格按照規(guī)范來實現(xiàn),并用來訓練mnist數(shù)據(jù)集,會出現(xiàn)各種問題,如,經(jīng)過16層卷積后,28*28*1的圖片幾乎無法進行。

先介紹下VGG

ILSVRC 2014的第二名是Karen Simonyan和 Andrew Zisserman實現(xiàn)的卷積神經(jīng)網(wǎng)絡,現(xiàn)在稱其為VGGNet。它主要的貢獻是展示出網(wǎng)絡的深度是算法優(yōu)良性能的關(guān)鍵部分。

他們最好的網(wǎng)絡包含了16個卷積/全連接層。網(wǎng)絡的結(jié)構(gòu)非常一致,從頭到尾全部使用的是3x3的卷積和2x2的匯聚。他們的預訓練模型是可以在網(wǎng)絡上獲得并在Caffe中使用的。

VGGNet不好的一點是它耗費更多計算資源,并且使用了更多的參數(shù),導致更多的內(nèi)存占用(140M)。其中絕大多數(shù)的參數(shù)都是來自于第一個全連接層。

模型結(jié)構(gòu):

本文在實現(xiàn)時候,盡量保存VGG原來模型結(jié)構(gòu),核心代碼如下:

weights ={
  'wc1':tf.Variable(tf.random_normal([3,3,1,64])),
  'wc2':tf.Variable(tf.random_normal([3,3,64,64])),
  'wc3':tf.Variable(tf.random_normal([3,3,64,128])),
  'wc4':tf.Variable(tf.random_normal([3,3,128,128])),
  
  'wc5':tf.Variable(tf.random_normal([3,3,128,256])),
  'wc6':tf.Variable(tf.random_normal([3,3,256,256])),
  'wc7':tf.Variable(tf.random_normal([3,3,256,256])),
  'wc8':tf.Variable(tf.random_normal([3,3,256,256])),
  
  'wc9':tf.Variable(tf.random_normal([3,3,256,512])),
  'wc10':tf.Variable(tf.random_normal([3,3,512,512])),
  'wc11':tf.Variable(tf.random_normal([3,3,512,512])),
  'wc12':tf.Variable(tf.random_normal([3,3,512,512])),
  'wc13':tf.Variable(tf.random_normal([3,3,512,512])),
  'wc14':tf.Variable(tf.random_normal([3,3,512,512])),
  'wc15':tf.Variable(tf.random_normal([3,3,512,512])),
  'wc16':tf.Variable(tf.random_normal([3,3,512,256])),
  
  'wd1':tf.Variable(tf.random_normal([4096,4096])),
  'wd2':tf.Variable(tf.random_normal([4096,4096])),
  'out':tf.Variable(tf.random_normal([4096,nn_classes])),
}
 
biases ={
  'bc1':tf.Variable(tf.zeros([64])),
  'bc2':tf.Variable(tf.zeros([64])),
  'bc3':tf.Variable(tf.zeros([128])),
  'bc4':tf.Variable(tf.zeros([128])),
  'bc5':tf.Variable(tf.zeros([256])),
  'bc6':tf.Variable(tf.zeros([256])),
  'bc7':tf.Variable(tf.zeros([256])),
  'bc8':tf.Variable(tf.zeros([256])),
  'bc9':tf.Variable(tf.zeros([512])),
  'bc10':tf.Variable(tf.zeros([512])),
  'bc11':tf.Variable(tf.zeros([512])),
  'bc12':tf.Variable(tf.zeros([512])),
  'bc13':tf.Variable(tf.zeros([512])),
  'bc14':tf.Variable(tf.zeros([512])),
  'bc15':tf.Variable(tf.zeros([512])),
  'bc16':tf.Variable(tf.zeros([256])),
  
  
  'bd1':tf.Variable(tf.zeros([4096])),
  'bd2':tf.Variable(tf.zeros([4096])),
  'out':tf.Variable(tf.zeros([nn_classes])),
}

卷積實現(xiàn):

def convLevel(i,input,type):
  num = i
  out = conv2D('conv'+str(num),input,weights['wc'+str(num)],biases['bc'+str(num)])
  if type=='p':
    out = maxPool2D('pool'+str(num),out, k=2) 
    out = norm('norm'+str(num),out, lsize=4)
  return out 
 
def VGG(x,weights,biases,dropout):
  x = tf.reshape(x,shape=[-1,28,28,1])
 
  input = x
 
  for i in range(16):
    i += 1
    if(i==2) or (i==4) or (i==12) : # 根據(jù)模型定義還需要更多的POOL化,但mnist圖片大小不允許。
      input = convLevel(i,input,'p')
    else:
      input = convLevel(i,input,'c')

訓練:

pred = VGG(x, weights, biases, keep_prob)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,labels=y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
 
correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1))
accuracy_ = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
 
init = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init)
  step = 1
  while step*batch_size < train_iters:
    batch_x,batch_y = mnist.train.next_batch(batch_size)
    sess.run(optimizer,feed_dict={x:batch_x,y:batch_y,keep_prob:dropout})
    print(step*batch_size)
    if step % display_step == 0 :
      #loss,acc = sess.run([cost,accuracy],feed_dict={x:batch_x,y:batch_y,keep_prob=1.0})
      acc = sess.run(accuracy_, feed_dict={x: batch_x, y: batch_y, keep_prob: 1.})
      # 計算損失值
      
      loss = sess.run(cost, feed_dict={x: batch_x, y: batch_y, keep_prob: 1.})
      print("iter: "+str(step*batch_size)+"mini batch Loss="+"{:.6f}".format(loss)+",acc="+"{:6f}".format(acc))
 
    step += 1 
   
  print("training end!") 

最終效果:

訓練10000次后:結(jié)果如下:

iter: 12288 mini batch Loss=5088409.500000,acc=0.578125

iter: 12800 mini batch Loss=4514274.000000,acc=0.601562

iter: 13312 mini batch Loss=4483454.500000,acc=0.648438

這種深度的模型可以考慮循環(huán)10萬次以上。目前效果還不錯,本人沒有GPU,心痛筆記本的CPU,100%的CPU利用率,聽到風扇響就不忍心再訓練,本文也借鑒了alex網(wǎng)絡實現(xiàn),當然我也實現(xiàn)了這個網(wǎng)絡模型。在MNIST數(shù)據(jù)上,ALEX由于層數(shù)較少,收斂更快,當然MNIST,用CNN足夠了。

以上這篇使用tensorflow實現(xiàn)VGG網(wǎng)絡,訓練mnist數(shù)據(jù)集方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)的讀取電腦硬件信息功能示例

    Python實現(xiàn)的讀取電腦硬件信息功能示例

    這篇文章主要介紹了Python實現(xiàn)的讀取電腦硬件信息功能,結(jié)合實例形式分析了Python基于wmi庫讀取電腦CPU、磁盤、網(wǎng)絡、進程等硬件信息相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • 在Python運行時動態(tài)查看進程內(nèi)部信息的方法

    在Python運行時動態(tài)查看進程內(nèi)部信息的方法

    今天小編就為大家分享一篇在Python運行時動態(tài)查看進程內(nèi)部信息的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python 恐龍跑跑小游戲?qū)崿F(xiàn)流程

    Python 恐龍跑跑小游戲?qū)崿F(xiàn)流程

    大家好,本篇文章主要講的是用python實現(xiàn)谷歌小恐龍小游戲,看看這是你斷網(wǎng)時的樣子么,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Python中range()與np.arange()的具體使用

    Python中range()與np.arange()的具體使用

    本文主要介紹了Python中range()與np.arange()的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • MATLAB中print函數(shù)使用示例詳解

    MATLAB中print函數(shù)使用示例詳解

    print函數(shù)的功能是打印圖窗或保存為特定文件格式,這篇文章主要介紹了MATLAB中print函數(shù)使用,需要的朋友可以參考下
    2023-03-03
  • Pycharm新手使用教程(圖文詳解)

    Pycharm新手使用教程(圖文詳解)

    這篇文章主要介紹了Pycharm新手使用教程(圖文詳解),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • python中的列表和元組區(qū)別分析

    python中的列表和元組區(qū)別分析

    這篇文章主要介紹了python中的列表和元組區(qū)別分析,需要的朋友可以參考下
    2020-12-12
  • python畫圖的函數(shù)用法以及技巧

    python畫圖的函數(shù)用法以及技巧

    在本文里小編給大家整理的是關(guān)于怎么用python畫圖以及python畫圖中turtle函數(shù)的用法技巧,需要的朋友們參考下。
    2019-06-06
  • 教你怎么用Python實現(xiàn)GIF動圖的提取及合成

    教你怎么用Python實現(xiàn)GIF動圖的提取及合成

    今天教大家一個Python有趣好玩的小功能:將多張圖片轉(zhuǎn)為GIF,同時也可以將一個GIF動圖提取出里面的圖片,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • flask重啟后端口被占用的問題解決(非kill)

    flask重啟后端口被占用的問題解決(非kill)

    本文主要介紹了flask重啟后端口被占用的問題解決(非kill),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論

绥滨县| 昭通市| 青河县| 饶河县| 静宁县| 依兰县| 城固县| 明溪县| 育儿| 咸宁市| 凤台县| 永吉县| 犍为县| 武山县| 兰溪市| 新泰市| 桃源县| 济宁市| 名山县| 六枝特区| 大足县| 忻城县| 定兴县| 长汀县| 南平市| 宿松县| 卢湾区| 乌恰县| 宝坻区| 拉萨市| 荆州市| 龙岩市| 德令哈市| 和静县| 德兴市| 勐海县| 德清县| 周口市| 迁安市| 水富县| 苏尼特右旗|