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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

复现VGG19训练自定义图像分类

發布時間:2024/8/24 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 复现VGG19训练自定义图像分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、復現VGG訓練自定義圖像分類,成功了哈哈。

  需要代碼工程可聯系博主qq號,在左邊連接可找到。

  核心代碼:

# coding:utf-8
import tensorflow as tf
import os
from load_vgg19_model import net

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

def VGG19_image_classifier(X,Y,nn_classes):

    vgg19_path = "./vgg19_model/imagenet-vgg-verydeep-19.mat"
    net_list,mean_pixel,all_layers = net(vgg19_path,X)

    vgg19_pool5 = net_list[-1]["pool5"]

    vgg19_pool5_shape = vgg19_pool5.get_shape().as_list()

    vgg19_pool5_number = vgg19_pool5_shape[1]*vgg19_pool5_shape[2]*vgg19_pool5_shape[3]

    weights = {
        'wd1': tf.Variable(tf.random_normal([vgg19_pool5_number, 4096])),
        'wd2': tf.Variable(tf.random_normal([4096, 4096])),
        'out': tf.Variable(tf.random_normal([4096, nn_classes]))
    }

    biases = {
        'bd1': tf.Variable(tf.zeros([4096])),
        'bd2': tf.Variable(tf.zeros([4096])),
        'out': tf.Variable(tf.zeros([nn_classes]))
    }

    # 全連接一層
    _densel = tf.reshape(vgg19_pool5, [-1, vgg19_pool5_number])

    fc6 = tf.add(tf.matmul(_densel,weights["wd1"]),biases["bd1"])
    relu6 = tf.nn.relu(fc6)

    # 全連接二層

    fc7 = tf.add(tf.matmul(relu6,weights["wd2"]),biases["bd2"])
    relu7 = tf.nn.relu(fc7)

    # 輸出層
    fc8 = tf.add(tf.matmul(relu7,weights["out"]),biases["out"])

    # out = tf.nn.softmax(fc8)
    out = fc8

    # 損失函數 loss
    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=Y, logits=out))  # 計算交叉熵

    # 優化目標 optimizing
    optimizing = tf.train.AdamOptimizer(0.0001).minimize(loss)  # 使用adam優化器來以0.0001的學習率來進行微調

    # 精確度 accuracy
    correct_prediction = tf.equal(tf.argmax(Y, 1), tf.argmax(out, 1))  # 判斷預測標簽和實際標簽是否匹配
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

    # 想要保存的模型參數,方便加載找到。
    tf.add_to_collection("loss", loss)
    tf.add_to_collection("out", out)
    tf.add_to_collection("accuracy", accuracy)
    tf.add_to_collection("optimizing", optimizing)

    return {
        "loss": loss,
        "optimizing": optimizing,
        "accuracy": accuracy,
        "out": out,
        "mean_pixel":mean_pixel
    }

  

  小批量梯度訓練方法如下圖,才訓練1次達到88%。

總結

以上是生活随笔為你收集整理的复现VGG19训练自定义图像分类的全部內容,希望文章能夠幫你解決所遇到的問題。

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