黑马深度学习和CV入门3——卷积神经网络

mnist案例

数据加载

黑马深度学习和CV入门3——卷积神经网络_第1张图片
黑马深度学习和CV入门3——卷积神经网络_第2张图片

数据处理

黑马深度学习和CV入门3——卷积神经网络_第3张图片
黑马深度学习和CV入门3——卷积神经网络_第4张图片
黑马深度学习和CV入门3——卷积神经网络_第5张图片

模型构建

黑马深度学习和CV入门3——卷积神经网络_第6张图片
黑马深度学习和CV入门3——卷积神经网络_第7张图片

模型编译和训练

黑马深度学习和CV入门3——卷积神经网络_第8张图片
黑马深度学习和CV入门3——卷积神经网络_第9张图片
黑马深度学习和CV入门3——卷积神经网络_第10张图片
黑马深度学习和CV入门3——卷积神经网络_第11张图片
黑马深度学习和CV入门3——卷积神经网络_第12张图片
黑马深度学习和CV入门3——卷积神经网络_第13张图片

模型评估和保存

黑马深度学习和CV入门3——卷积神经网络_第14张图片
黑马深度学习和CV入门3——卷积神经网络_第15张图片

#tf中使用工具包
import tensorflow as tf
#构建模型
from tensorflow.keras.models import Sequential
#相关的网络层
from tensorflow.keras.layers import Dense,Dropout,Activation,BatchNormalization
#导入辅助工具包
from tensorflow.keras import utils
#正则化
from tensorflow.keras import regularizers
#数据集
from tensorflow.keras.datasets import mnist
import matplotlib.pyplot as plt

#加载数据集
(x_train,y_train),(x_test,y_test)=mnist.load_data()
print(x_train.shape)
print(y_train)
#显示数据
plt.figure()
plt.imshow(x_train[1],cmap="gray")
#数据处理
#调整数据维度,每一个数字转换成一个向量
x_train=x_train.reshape(60000,784)
x_test = x_test.reshape(10000,784)
#数据类型调整
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
#归一化
x_train = x_train/255
x_test = x_test/255
#将目标值转换为独热编码的形式
y_train=utils.to_categorical(y_train,10)
y_test = utils.to_categorical(y_test,10)
print(y_train)
#模型构建
#使用序列模型进行构建
model = Sequential()
#全连接层:2个隐层,1个输出层
#第一个隐层:512个神经元,先激活后BN,随机失活
model.add(Dense(512,activation="relu",input_shape=(784,)))
model.add(BatchNormalization())
model.add(Dropout(0.2))
#第二个隐层:512个神经元,先BN后激活,随机失活
model.add(Dense(512,kernel_regularizer=regularizers.l2(0.01)))
model.add(BatchNormalization())
model.add(Activation("relu"))
model.add(Dropout(0.2))
#输出层
model.add(Dense(10,activation="softmax"))
print(model.summary())
#模型编译
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
#模型训练
history = model.fit(x_train,y_train,
                    batch_size=128,epochs=4,verbose=1,
                    validation_data=(x_test,y_test))
plt.figure()
plt.plot(history.history['loss'],label="train")
plt.plot(history.history["val_loss"],label="val")
plt.legend()
plt.grid()
plt.figure()
plt.plot(history.history['accuracy'],label="train")
plt.plot(history.history["val_accuracy"],label="val")
plt.legend()
plt.grid()
#保存模型架构与权重在h5文件中
model.save("my_model.h5")
#加载模型:包括架构和对应的权重
model=tf.keras.models.load_model("my_model.h5")
#模型评估
model.evaluate(x_test,y_test,verbose=1)




卷积神经网络

黑马深度学习和CV入门3——卷积神经网络_第16张图片

卷积层

黑马深度学习和CV入门3——卷积神经网络_第17张图片
黑马深度学习和CV入门3——卷积神经网络_第18张图片
黑马深度学习和CV入门3——卷积神经网络_第19张图片
黑马深度学习和CV入门3——卷积神经网络_第20张图片
黑马深度学习和CV入门3——卷积神经网络_第21张图片

池化层

黑马深度学习和CV入门3——卷积神经网络_第22张图片
黑马深度学习和CV入门3——卷积神经网络_第23张图片
黑马深度学习和CV入门3——卷积神经网络_第24张图片

全连接层

黑马深度学习和CV入门3——卷积神经网络_第25张图片

卷积神经网络的构建LeNet-5

黑马深度学习和CV入门3——卷积神经网络_第26张图片
黑马深度学习和CV入门3——卷积神经网络_第27张图片
黑马深度学习和CV入门3——卷积神经网络_第28张图片
黑马深度学习和CV入门3——卷积神经网络_第29张图片
黑马深度学习和CV入门3——卷积神经网络_第30张图片
黑马深度学习和CV入门3——卷积神经网络_第31张图片
黑马深度学习和CV入门3——卷积神经网络_第32张图片

import tensorflow as tf
from tensorflow.keras.datasets import mnist

#数据加载
(train_images,train_labels),(test_images,test_labels)=mnist.load_data()
#维度调整
train_images = tf.reshape(train_images,(train_images.shape[0],train_images.shape[1],train_images.shape[2],1))
print(train_images.shape)
test_images=tf.reshape(test_images,(test_images.shape[0],test_images.shape[1],test_images.shape[2],1))
print(test_images.shape)
#模型构建
net = tf.keras.models.Sequential([
    #卷积层:6个5*5的卷积 sigmoid
    tf.keras.layers.Conv2D(filters=6,kernel_size=5,
                           activation="sigmoid",input_shape=(28,28,1)),
    #max pooling
    tf.keras.layers.MaxPool2D(pool_size=2,strides=2),
    #卷积层:16 5*5 sigmoid
    tf.keras.layers.Conv2D(filters=16,kernel_size=5,activation="sigmoid"),
    #max pooling
    tf.keras.layers.MaxPool2D(pool_size=2,strides=2),
    #维度调整
    tf.keras.layers.Flatten(),
    #全连接层,sigmoid
    tf.keras.layers.Dense(120,activation="sigmoid"),
    #全连接层,sigmoid
    tf.keras.layers.Dense(84,activation="sigmoid"),
    #输出层,softmax
    tf.keras.layers.Dense(10,activation="softmax")
])
#模型编译
#设置优化器和损失函数:
#优化器
optimizer = tf.keras.optimizers.SGD(learning_rate=0.9)
#模型编译:损失函数,优化器和评价指标
net.compile(optimizer=optimizer,
            loss='sparse_categorical_crossentropy',
            metrics=['accuracy'])
#模型训练
net.fit(train_images,train_labels,epochs=5,validation_split=0.1)
#模型评价
score = net.evaluate(test_images,test_labels,verbose=1)
print('Test accuracy:',score[1])

你可能感兴趣的:(tensorflow,神经网络,深度学习,pytorch)