ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VGG

2022-05-16 00:36:05  阅读:202  来源: 互联网

标签:layers decay VGG label add model data


vgg代码如下:

 1 import tensorflow as tf
 2 from tensorflow import keras
 3 from tensorflow.keras import layers, regularizers
 4 import numpy as np
 5 import os
 6 import cv2
 7 import matplotlib.pyplot as plt
 8 
 9 
10 os.environ["CUDA_VISIBLE_DEVICES"] = "1"
 1 resize = 224
 2 path ="train/"
 3 
 4 def load_data():
 5     imgs = os.listdir(path)
 6     num = len(imgs)
 7     train_data = np.empty((5000, resize, resize, 3), dtype="int32")
 8     train_label = np.empty((5000, ), dtype="int32")
 9     test_data = np.empty((5000, resize, resize, 3), dtype="int32")
10     test_label = np.empty((5000, ), dtype="int32")
11     for i in range(5000):
12         if i % 2:
13             train_data[i] = cv2.resize(cv2.imread(path+'/'+ 'dog.' + str(i) + '.jpg'), (resize, resize))
14             train_label[i] = 1
15         else:
16             train_data[i] = cv2.resize(cv2.imread(path+'/' + 'cat.' + str(i) + '.jpg'), (resize, resize))
17             train_label[i] = 0
18     for i in range(5000, 10000):
19         if i % 2:
20             test_data[i-5000] = cv2.resize(cv2.imread(path+'/' + 'dog.' + str(i) + '.jpg'), (resize, resize))
21             test_label[i-5000] = 1
22         else:
23             test_data[i-5000] = cv2.resize(cv2.imread(path+'/' + 'cat.' + str(i) + '.jpg'), (resize, resize))
24             test_label[i-5000] = 0
25     return train_data, train_label, test_data, test_label
 1 def vgg16():
 2     weight_decay = 0.0005
 3     nb_epoch = 100
 4     batch_size = 32
 5     
 6     # layer1
 7     model = keras.Sequential()
 8     model.add(layers.Conv2D(64, (3, 3), padding='same',
 9                      input_shape=(224, 224, 3), kernel_regularizer=regularizers.l2(weight_decay)))
10     model.add(layers.Activation('relu'))
11     model.add(layers.BatchNormalization())
12     model.add(layers.Dropout(0.3))
13     # layer2
14     model.add(layers.Conv2D(64, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
15     model.add(layers.Activation('relu'))
16     model.add(layers.BatchNormalization())
17     model.add(layers.MaxPooling2D(pool_size=(2, 2)))
18     # layer3
19     model.add(layers.Conv2D(128, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
20     model.add(layers.Activation('relu'))
21     model.add(layers.BatchNormalization())
22     model.add(layers.Dropout(0.4))
23     # layer4
24     model.add(layers.Conv2D(128, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
25     model.add(layers.Activation('relu'))
26     model.add(layers.BatchNormalization())
27     model.add(layers.MaxPooling2D(pool_size=(2, 2)))
28     # layer5
29     model.add(layers.Conv2D(256, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
30     model.add(layers.Activation('relu'))
31     model.add(layers.BatchNormalization())
32     model.add(layers.Dropout(0.4))
33     # layer6
34     model.add(layers.Conv2D(256, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
35     model.add(layers.Activation('relu'))
36     model.add(layers.BatchNormalization())
37     model.add(layers.Dropout(0.4))
38     # layer7
39     model.add(layers.Conv2D(256, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
40     model.add(layers.Activation('relu'))
41     model.add(layers.BatchNormalization())
42     model.add(layers.MaxPooling2D(pool_size=(2, 2)))
43     # layer8
44     model.add(layers.Conv2D(512, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
45     model.add(layers.Activation('relu'))
46     model.add(layers.BatchNormalization())
47     model.add(layers.Dropout(0.4))
48     # layer9
49     model.add(layers.Conv2D(512, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
50     model.add(layers.Activation('relu'))
51     model.add(layers.BatchNormalization())
52     model.add(layers.Dropout(0.4))
53     # layer10
54     model.add(layers.Conv2D(512, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
55     model.add(layers.Activation('relu'))
56     model.add(layers.BatchNormalization())
57     model.add(layers.MaxPooling2D(pool_size=(2, 2)))
58     # layer11
59     model.add(layers.Conv2D(512, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
60     model.add(layers.Activation('relu'))
61     model.add(layers.BatchNormalization())
62     model.add(layers.Dropout(0.4))
63     # layer12
64     model.add(layers.Conv2D(512, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
65     model.add(layers.Activation('relu'))
66     model.add(layers.BatchNormalization())
67     model.add(layers.Dropout(0.4))
68     # layer13
69     model.add(layers.Conv2D(512, (3, 3), padding='same', kernel_regularizer=regularizers.l2(weight_decay)))
70     model.add(layers.Activation('relu'))
71     model.add(layers.BatchNormalization())
72     model.add(layers.MaxPooling2D(pool_size=(2, 2)))
73     model.add(layers.Dropout(0.5))
74     # layer14
75     model.add(layers.Flatten())
76     model.add(layers.Dense(512, kernel_regularizer=regularizers.l2(weight_decay)))
77     model.add(layers.Activation('relu'))
78     model.add(layers.BatchNormalization())
79     # layer15
80     model.add(layers.Dense(512, kernel_regularizer=regularizers.l2(weight_decay)))
81     model.add(layers.Activation('relu'))
82     model.add(layers.BatchNormalization())
83     # layer16
84     model.add(layers.Dropout(0.5))
85     model.add(layers.Dense(2))
86     model.add(layers.Activation('softmax'))
87 
88     return model
1 #if __name__ == '__main__':
2 train_data, train_label, test_data, test_label = load_data()
3 train_data = train_data.astype('float32')
4 test_data = test_data.astype('float32')
5 train_label = keras.utils.to_categorical(train_label, 2)
6 test_label = keras.utils.to_categorical(test_label, 2)
 1 #定义训练方法,超参数设置
 2 model = vgg16()
 3 sgd = tf.keras.optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) #设置优化器为SGD
 4 model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
 5 history = model.fit(train_data, train_label,
 6               batch_size=20,
 7               epochs=10,
 8               validation_split=0.2,  #把训练集中的五分之一作为验证集
 9               shuffle=True)
10 scores = model.evaluate(test_data,test_label,verbose=1)
11 print(scores)
12 model.save('model/vgg16dogcat.h5')
 1 acc = history.history['accuracy']  # 获取训练集准确性数据
 2 val_acc = history.history['val_accuracy']  # 获取验证集准确性数据
 3 loss = history.history['loss']  # 获取训练集错误值数据
 4 val_loss = history.history['val_loss']  # 获取验证集错误值数据
 5 epochs = range(1, len(acc) + 1)
 6 plt.plot(epochs, acc, 'bo', label='Trainning acc')  # 以epochs为横坐标,以训练集准确性为纵坐标
 7 plt.plot(epochs, val_acc, 'b', label='Vaildation acc')  # 以epochs为横坐标,以验证集准确性为纵坐标
 8 plt.legend()  # 绘制图例,即标明图中的线段代表何种含义
 9  
10 plt.show()

运行结果如下:

 

 

 

标签:layers,decay,VGG,label,add,model,data
来源: https://www.cnblogs.com/-tsir-/p/16275376.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有