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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python制作训练集_利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试

發布時間:2025/3/19 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python制作训练集_利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VGGNet_TF

利用Tensorflow簡單實現VGGNet,從數據集制作到訓練完成測試

參考:《Tensorflow實戰》《Tensorflow 實戰Google深度學習框架》

學習Tensorflow,拿VGG16練練手,沒有其他騷操作,只有數據集制作,訓練及測試。

create_tfrecords.py為生成tfrecords數據腳本

VGG16.py為網絡結構定義文件

train.py為訓練腳本

test.py為測試腳本

制作tfrecord數據文件

下載17flowers數據集,解壓到目錄下

VGGNet

|__ 17flowers

|__ 0

|__ xxx.JPEG

|__ 1

|__ xxx.JPEG

|__ 2

|__ xxx.JPEG

執行create_tfrecords.py腳本,會在根目錄下生成train.tfrecords文件,也可在腳本中指定生成路徑

訓練自己的數據

修改腳本中,模型保存位置及tfrecord數據所在路徑,執行train.py腳本即可訓練

訓練完成后生成模型文件,執行test.py腳本即可進行測試

test文件夾中的圖片名字前面數字即為所屬類別

網絡結構,VGG16.py

卷積和全連接權重初始化定義了3種方式:

1.預訓練模型參數

2.截尾正態,參考書上采用該方式

3.xavier,網上blog有采用該方式

通過參數finetrun和xavier控制選擇哪種方式,有興趣的可以都試試

def conv(x, d_out, name, fineturn=False, xavier=False):

d_in = x.get_shape()[-1].value

with tf.name_scope(name) as scope:

# Fine-tuning

if fineturn:

kernel = tf.constant(data_dict[name][0], name="weights")

bias = tf.constant(data_dict[name][1], name="bias")

print "fineturn"

elif not xavier:

kernel = tf.Variable(tf.truncated_normal([3, 3, d_in, d_out], stddev=0.1), name='weights')

bias = tf.Variable(tf.constant(0.0, dtype=tf.float32, shape=[d_out]),

trainable=True,

name='bias')

print "truncated_normal"

else:

kernel = tf.get_variable(scope+'weights', shape=[3, 3, d_in, d_out],

dtype=tf.float32,

initializer=tf.contrib.layers.xavier_initializer_conv2d())

bias = tf.Variable(tf.constant(0.0, dtype=tf.float32, shape=[d_out]),

trainable=True,

name='bias')

print "xavier"

conv = tf.nn.conv2d(x, kernel,[1, 1, 1, 1], padding='SAME')

activation = tf.nn.relu(conv + bias, name=scope)

print_layer(activation)

return activation

訓練的時候loss有不收斂的情況,可以適當的調整學習率。

kee_prob設置為0.5的時候,雖然loss下降到很低,但是測試的效果很差,因為這個糾結了好久。后來改為0.8感覺還可以,可能是因為數據集太少的原因。

神經網絡中的超參數各有各的作用,寫完網絡在訓練的過程中,權重初始化方式,學習率的選擇,dropout概率的選擇不同都會對訓練產生影響,如果想做到指哪打哪還得多積累積累經驗。雖然網絡可以work,但還是隱隱約約感覺有哪里不對,后期還得優化優化,如有錯誤歡迎指正交流~

總結

以上是生活随笔為你收集整理的python制作训练集_利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试的全部內容,希望文章能夠幫你解決所遇到的問題。

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