编程语言
发布时间:2022-06-22 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了pytorch + tensorflow VGG猫狗识别,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
pytorch
@H_
489_3@
import torch
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.ModulE):
def __init__(self):
super(Net, self).__init__()
# 1 input image chAnnel, 6 output chAnnels, 5x5 square convolution
# kernel
self.conv1 = nn.Co
nv2d(1, 6, 5
)
self.conv2 = nn.Co
nv2d(6, 16, 5
)
# an affine operation: y = Wx + b
self.fc1 = nn.Linear(16 * 5 * 5, 120
)
self.fc2 = nn.Linear(120, 84
)
self.fc3 = nn.Linear(84, 10
)
def forWARD(self, X):
# Max pooling over a (2, 2) window
x = F.max_pool2d(F.relu(self.conv1(
X)), (2, 2
))
# If the size is a square you can only specify a single number
x = F.max_pool2d(F.relu(self.co
nv2(
X)), 2
)
x = x.view(-1
, self.num_flat_features(X))
x =
F.relu(self.fc1(X))
x =
F.relu(self.fc2(X))
x =
self.fc3(X)
return x
def num_flat_features(self, X):
size = x.size()[1:]
# all dimensions except the batch dimension
num_features = 1
for s
in size:
num_features *=
s
return num_features
net =
Net()
print(net)
params =
list(net.parameters())
print(len(params))
print(params
[0].size())
# conv1's .weigh
input = torch.randn(1, 1, 32, 32
)
out =
net(input)
print(out)
![pytorch + tensorflow VGG猫狗识别 pytorch + tensorflow VGG猫狗识别](http://code.js-code.com/res/2022/06-22/20/63ef418bdc119356363b4564d35152cf.jpg)
tensorflow
@H_
489_3@
import tensorflow as tf
from tensorflow
import keras
from tensorflow.keras
import layers, regularizers
import numpy as np
import os
import cv2
import matplotlib.pyplot as plt
os.environ["CUDA_VISIBLE_DEVICES"] =
"1"
@H_
489_3@resize = 240
path =
"D:/JupyterLab-Portable-3.1.0-3.9/notebooks/AI/Train"
def load_data():
imgs =
os.listdir(path)
num =
len(imgs)
Train_data = np.empty((5000, resize, resize, 3), dtype=
"int32")
Train_label = np.empty((5000, ), dtype=
"int32")
test_data = np.empty((5000, resize, resize, 3), dtype=
"int32")
test_label = np.empty((5000, ), dtype=
"int32")
for i
in range(5000
):
if i % 2
:
Train_data[i] = cv2.resize(cv2.imread(path+
'/'+
'dog.' + str(i) +
'.jpg'), (resize, resizE))
Train_label[i] = 1
else:
Train_data[i] = cv2.resize(cv2.imread(path+
'/' +
'cat.' + str(i) +
'.jpg'), (resize, resizE))
Train_label[i] =
0
for i
in range(5000, 10000
):
if i % 2
:
test_data[i-5000] = cv2.resize(cv2.imread(path+
'/' +
'dog.' + str(i) +
'.jpg'), (resize, resizE))
test_label[i-5000] = 1
else:
test_data[i-5000] = cv2.resize(cv2.imread(path+
'/' +
'cat.' + str(i) +
'.jpg'), (resize, resizE))
test_label[i-5000] =
0
return Train_data,
Train_label,
test_data,
test_label
@H_
489_3@
def vgg16():
weight_decay = 0.0005
nb_epoch = 100
batch_size = 32
# layer1
model =
keras.Sequential()
model.add(layers.Conv2D(64, (3, 3), padding=
'same',
input_shape=(224, 224, 3), kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.3
))
# layer2
mode
l.add(layer
s.Co
nv2D(64, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.MaxPooling2D(pool_size=(2, 2
)))
# layer3
mode
l.add(layer
s.Co
nv2D(128, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.4
))
# layer4
mode
l.add(layer
s.Co
nv2D(128, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.MaxPooling2D(pool_size=(2, 2
)))
# layer5
mode
l.add(layer
s.Co
nv2D(256, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.4
))
# layer6
mode
l.add(layer
s.Co
nv2D(256, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.4
))
# layer7
mode
l.add(layer
s.Co
nv2D(256, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.MaxPooling2D(pool_size=(2, 2
)))
# layer8
mode
l.add(layer
s.Co
nv2D(512, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.4
))
# layer9
mode
l.add(layer
s.Co
nv2D(512, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.4
))
# layer10
mode
l.add(layer
s.Co
nv2D(512, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.MaxPooling2D(pool_size=(2, 2
)))
# layer11
mode
l.add(layer
s.Co
nv2D(512, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.4
))
# layer12
mode
l.add(layer
s.Co
nv2D(512, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.Dropout(0.4
))
# layer13
mode
l.add(layer
s.Co
nv2D(512, (3, 3), padding=
'same', kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
model.add(layers.MaxPooling2D(pool_size=(2, 2
)))
model.add(layers.Dropout(0.5
))
# layer14
model.add(layers.Flatten())
model.add(layers.Dense(512, kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
# layer15
mode
l.add(layer
s.Dense(512, kernel_regularizer=
regularizers.l2(weight_decay)))
model.add(layers.Activation('relu'))
model.add(layers.batchNormalization())
# layer16
mode
l.add(layer
s.Dropout(0.5
))
model.add(layers.Dense(2
))
model.add(layers.Activation('softmax'))
return model
@H_
489_3@
#定义训练方法,超参数设置
model =
vgg16()
sgd = tf.kera
s.optimizer
s.SGD(lr
=0.01, decay=1e-6, momentum
=0.9,
nesterov=Tru
E) #设置优化器为 SGD
mode
l.compile(loss=
'categorical_crossentropy', optimizer=sgd, metrics=[
'accuracy'])
history =
model.fit(Train_data, Train_label,
batch_size=20
,
epochs=10
,
validation_split=0.2
,
shuffle=
TruE)
scores = mode
l.evaluate(
test_data,
test_label,verbose=1
)
print(scores)
model.save('D:JupyterLab-Portable-3.1.0-3.9notebooksAITrainmodelvgg16dogcat.h5')
@H_
489_3@acc = history.histor
Y['accuracy']
# 获取训练集准确性数据
val_acc = history.histor
Y['val_accuracy']
# 获取验证集准确性数据
loss = history.histor
Y['loss']
# 获取训练集错误值数据
val_loss = history.histor
Y['val_loss']
# 获取验证集错误值数据
epochs = range(1, len(ac
C) + 1
)
plt.plot(epochs, acc, 'bo', label=
'Trainning acc')
# 以epochs为横坐标,以训练集准确性为纵坐标
plt.plot(epochs, val_acc,
'b', label=
'Vaildation acc')
# 以epochs为横坐标,以验证集准确性为纵坐标
plt.le
gend()
# 绘制图例,即标明图中的线段代表何种含义
plt.show()
![pytorch + tensorflow VGG猫狗识别 pytorch + tensorflow VGG猫狗识别](http://code.js-code.com/res/2022/06-22/20/094449847f6f443068a82a689c22f550.jpg)
![pytorch + tensorflow VGG猫狗识别 pytorch + tensorflow VGG猫狗识别](http://code.js-code.com/res/2022/06-22/20/ff05254337d5904f6aedb3a12de64ae0.jpg)
大佬总结
以上是大佬教程为你收集整理的pytorch + tensorflow VGG猫狗识别全部内容,希望文章能够帮你解决pytorch + tensorflow VGG猫狗识别所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。