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

淺談keras使用預(yù)訓(xùn)練模型vgg16分類,損失和準(zhǔn)確度不變

 更新時(shí)間:2020年07月02日 08:39:13   作者:我的九八卡  
這篇文章主要介紹了淺談keras使用預(yù)訓(xùn)練模型vgg16分類,損失和準(zhǔn)確度不變,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編小編過(guò)來(lái)看看吧

問(wèn)題keras使用預(yù)訓(xùn)練模型vgg16分類,損失和準(zhǔn)確度不變。

細(xì)節(jié):使用keras訓(xùn)練一個(gè)兩類數(shù)據(jù),正負(fù)比例1:3,在vgg16后添加了幾個(gè)全鏈接并初始化了。并且對(duì)所有層都允許訓(xùn)練。

但是準(zhǔn)確度一直是0.75.

數(shù)據(jù)預(yù)先處理已經(jīng)檢查過(guò)格式正確

再將模型中relu改成sigmoid就正常了。

數(shù)據(jù)處理程序

import os
import pickle
import numpy as np
 
import DataFile
import SelectiveSearch
import Generator
import IoU
import Model_CRNN_VGG16
 
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import ModelCheckpoint
 
def data_generator(gen1,gen0):
 while True:
 data_pos = next(gen1)
 data_neg = next(gen0)
 ret_X = np.vstack((data_pos[0],data_neg[0]))
 ret_y = np.vstack((data_pos[1],data_neg[1]))
 
 index = np.arange(ret_y.shape[0])
 np.random.shuffle(index)
 
 ret_X = ret_X[index, :, :, :] # X_train是訓(xùn)練集,y_train是訓(xùn)練標(biāo)簽
 ret_y = ret_y[index]
 yield ret_X,ret_y
 
if __name__ == "__main__":
 type = "train"
 
 # 數(shù)據(jù)生成器,每個(gè)mini-batch包含32個(gè)正樣本(屬于VOC 20個(gè)類別),96個(gè)負(fù)樣本(background)
 RESIZE = (224, 224)
 path = "category_images"
 categories = os.listdir(path)
 categories.append('background')
 print(categories)
 
 train_1_datagen = ImageDataGenerator(
 rescale=1.0/255,
 #shear_range=0.2,
 #zoom_range=0.2,
 horizontal_flip=True)
 
 train_1_generator = train_1_datagen.flow_from_directory(
 'category_images',
 target_size=RESIZE,
 batch_size=32,
 classes = categories)
 
 train_0_datagen = ImageDataGenerator(
 rescale=1.0 / 255,
 #shear_range=0.2,
 #zoom_range=0.2,
 horizontal_flip=True)
 
 train_0_generator = train_0_datagen.flow_from_directory(
 'category_background',
 target_size=RESIZE,
 batch_size=32*3,
 classes=categories)
 
 generator = data_generator(train_1_generator,train_0_generator)
 
 # 創(chuàng)建模型
 model = Model_CRNN_VGG16.CRNN_Model(input_shape=(*RESIZE,3))
 cnn = model.CNN(len(categories))
 if os.path.exists('weights-cnn.hdf5'):
 cnn.load_weights('weights-cnn.hdf5')
 if type == "train":
 checkpoint = ModelCheckpoint('weights-cnn.hdf5',save_weights_only=True)
 cnn.fit_generator(generator = generator,steps_per_epoch=200,epochs=1000,callbacks=[checkpoint])
 else:
 img = next(generator)[0]
 result = cnn.predict(img)
 print(result)
 
 # 訓(xùn)練SVM
 # 非極大值抑制
 # 預(yù)測(cè)

模型程序:

from keras.applications.vgg16 import VGG16
from keras.layers import *
from keras.models import Model
from keras.optimizers import SGD,Adam
 
class CRNN_Model():
 def __init__(self,input_shape,trainable=True):
 vgg16 = VGG16(include_top=False,weights="imagenet", input_shape=input_shape)
 for layer in vgg16.layers:
  layer.trainable = trainable
 self.base_model = vgg16
 
 def CNN(self,classes):
 img_input = self.base_model.input
 x = self.base_model.get_layer('block5_conv3').output
 
 x = Flatten(name='crnn_flatten')(x)
 
 x = Dense(512,activation='relu', kernel_initializer='he_normal', name='crnn_fc1')(x)
 x = Dense(512,activation='relu', kernel_initializer='he_normal',name='crnn_fc2')(x)
 x = Dense(classes, activation='softmax', kernel_initializer='he_normal', name='crnn_predictions')(x)
 
 model = Model(img_input,x)
 
 sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
 adam = Adam()
 model.compile(optimizer=adam,
   loss='categorical_crossentropy',
   metrics=['accuracy'])
 
 model.summary()
 return model
if __name__ == "__main__":
 pass

補(bǔ)充知識(shí):val_acc一直不變

val_loss一直不變的原因

之前用keras編寫了LSTM模型,做圖片分類,自己劃分了測(cè)試集和訓(xùn)練集,但是得到的結(jié)果是每個(gè)epoch訓(xùn)練的準(zhǔn)確率都不變。

探索

我一直以為是我的數(shù)據(jù)的讀取方式不對(duì),我一直在從這方面下手,但是后來(lái)我發(fā)現(xiàn)根本不是這個(gè)原因,也找到了解決方案,具體原因有三點(diǎn),三點(diǎn)是遞進(jìn)關(guān)系。

1.數(shù)據(jù)集樣本各類別數(shù)量差距大

如果沒(méi)有這種情況就看看第二點(diǎn)。

2.訓(xùn)練集和數(shù)據(jù)集是手動(dòng)劃分的,改為代碼自動(dòng)劃分

代碼如下:

X_train, X_test,Y_train, Y_test = train_test_split(data, labels, test_size=0.4, random_state=42)```

上述方法要多設(shè)置幾個(gè)epoch,要有耐心的等,如果還是測(cè)試的準(zhǔn)確率還是不變,那就可能是第二個(gè)原因。

3. 訓(xùn)練模型不適用,或者模型參數(shù)不恰當(dāng),建議調(diào)參,或者改算法

如果第一個(gè)方法還是不行那就可能是算法不適合這個(gè)數(shù)據(jù)集,可以打印混淆矩陣看一下,是不是分類錯(cuò)誤率太高,比如我的數(shù)據(jù)集,做二分類,結(jié)果第二類全分到第一類了。

以上這篇淺談keras使用預(yù)訓(xùn)練模型vgg16分類,損失和準(zhǔn)確度不變就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python通過(guò)樸素貝葉斯和LSTM分別實(shí)現(xiàn)新聞文本分類

    Python通過(guò)樸素貝葉斯和LSTM分別實(shí)現(xiàn)新聞文本分類

    樸素貝葉斯法(Naive Bayes model)是基于貝葉斯定理與特征條件獨(dú)立假設(shè)的分類方法。LSTM則是一種時(shí)間循環(huán)神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測(cè)時(shí)間序列中間隔和延遲相對(duì)較長(zhǎng)的重要事件。本文將通過(guò)這兩個(gè)方法分別實(shí)現(xiàn)新聞文本分類,需要的可以參考一下
    2021-12-12
  • python-django中的APPEND_SLASH實(shí)現(xiàn)方法

    python-django中的APPEND_SLASH實(shí)現(xiàn)方法

    這篇文章主要介紹了python-django中的APPEND_SLASH實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • 深入理解Django-Signals信號(hào)量

    深入理解Django-Signals信號(hào)量

    這篇文章主要介紹了深入理解Django-Signals信號(hào)量,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python數(shù)據(jù)分析:手把手教你用Pandas生成可視化圖表的教程

    Python數(shù)據(jù)分析:手把手教你用Pandas生成可視化圖表的教程

    今天小編就為大家分享一篇Python數(shù)據(jù)分析:手把手教你用Pandas生成可視化圖表的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 使用Python與MQTT實(shí)現(xiàn)異步通信功能

    使用Python與MQTT實(shí)現(xiàn)異步通信功能

    物聯(lián)網(wǎng)(IoT)和實(shí)時(shí)通信的世界中,消息隊(duì)列遙測(cè)傳輸(MQTT)協(xié)議因其輕量級(jí)、可靠性和實(shí)時(shí)性成為廣受歡迎的選擇,本文給大家介紹了使用Python與MQTT實(shí)現(xiàn)異步通信功能,需要的朋友可以參考下
    2024-12-12
  • 深入了解PyQt5中的圖形視圖框架

    深入了解PyQt5中的圖形視圖框架

    PyQt5中圖形視圖框架主要包含三個(gè)類:QGraphicsItem圖元類、QGraphicsScene場(chǎng)景類和QGraphicsView視圖類。本文將通過(guò)示例詳細(xì)講解一下這三個(gè)類,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • Python爬蟲(chóng)番外篇之Cookie和Session詳解

    Python爬蟲(chóng)番外篇之Cookie和Session詳解

    這篇文章主要介紹了Python爬蟲(chóng)番外篇之Cookie和Session詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • 實(shí)操Python爬取覓知網(wǎng)素材圖片示例

    實(shí)操Python爬取覓知網(wǎng)素材圖片示例

    大家好,本篇文章介紹的是實(shí)操Python爬取覓知網(wǎng)素材圖片示例,感興趣的朋友趕快來(lái)看一看吧,對(duì)你有用的話記得收藏起來(lái),方便下次瀏覽
    2021-11-11
  • Python字符串切片操作知識(shí)詳解

    Python字符串切片操作知識(shí)詳解

    這篇文章主要介紹了Python中字符串切片操作 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • python中mediapipe庫(kù)踩過(guò)的坑實(shí)戰(zhàn)記錄

    python中mediapipe庫(kù)踩過(guò)的坑實(shí)戰(zhàn)記錄

    MediaPipe是由google制作的開(kāi)源的、跨平臺(tái)的機(jī)器學(xué)習(xí)框架,可以將一些模型部署到不同的平臺(tái)和設(shè)備上使用的同時(shí),也能保住檢測(cè)速度,下面這篇文章主要給大家介紹了關(guān)于python中mediapipe庫(kù)踩過(guò)的坑的相關(guān)資料,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

邛崃市| 哈尔滨市| 白银市| 陕西省| 平远县| 扬中市| 巩留县| 沈丘县| 河池市| 邵阳县| 安塞县| 木里| 四子王旗| 瑞金市| 永昌县| 股票| 高陵县| 桐城市| 九龙城区| 铅山县| 新沂市| 隆安县| 鹤岗市| 清苑县| 滨海县| 吉隆县| 遵义县| 葫芦岛市| 井研县| 桑日县| 资中县| 梅河口市| 成都市| 东丰县| 大化| 双桥区| 景洪市| 济源市| 三河市| 玛纳斯县| 库车县|