深度学习笔记_Keras六步法搭建网络
Posted Welcome_Back
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习笔记_Keras六步法搭建网络相关的知识,希望对你有一定的参考价值。
深度学习笔记_Keras六步法搭建网络
Keras六步法搭建网络,以MNIST数据集为例
一、import加载库
加载所需要的库,使用tensorflow库
import tensorflow as tf
二、设置训练集、测试集
设置所需要的训练集和测试集
Mnist数据集:共有7万张图片。其中6万张用于训练神经网络,1万张用于测试神经网络。
每张图片是一个2828像素点的0~9的手写数字图片。
(x_train, y_train)
训练集:(训练集特征,训练集标签)
(x_test, y_test)
测试集:(测试集特征,测试集标签)
特征即2828像素点的0~9的手写数字图片
标签即对应数字
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0#归一化,小数值利于神经网络运算
三、搭建神经网络
拉直层:tf.keras.layers.Flatten()
全连接层:tf.keras.layers.Dense(神经元个数,activation=”激活函数”,kernel_regularizer=正则化方式)
卷积层:tf.keras.layers.Conv2D(fliters=卷积核个数,kernel_size=卷积核尺寸,strides=卷积步长,padding=”valid”or “same”)
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(), #拉直层,将数据特征(图片)拉直为一维
tf.keras.layers.Dense(128, activation='relu'), #全连接层第一层,128个神经元,激活函数relu
tf.keras.layers.Dense(10, activation='softmax') #全连接层第二层,10个神经元,激活函数softmax
])
四、配置神经网络
在这里设置神经网络的优化器、损失函数及评价标准
model.compile(optimizer='adam', #优化器
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),#输出已满足概率分布
metrics=['sparse_categorical_accuracy'])
五、执行训练
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1 )#迭代一次epoch,进行一次评测
六、打印网络结构及参数
model.summary()
代码
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0#归一化,小数值利于神经网络运算
#搭建网络
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(), #拉直层
tf.keras.layers.Dense(128, activation='relu'), #第一层,128个神经元,激活函数relu
tf.keras.layers.Dense(10, activation='softmax') #第二层,10个神经元,激活函数softmax
])
#配置训练方法
model.compile(optimizer='adam', #优化器
#损失函数
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),#输出已满足概率分布
#
metrics=['sparse_categorical_accuracy'])
#执行
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1 )#迭代一次epoch,进行一次评测
#打印网络结构和参数统计
model.summary()
使用class方法搭建网络
class MnistModel(Model):
def __init__(self):
super(MnistModel, self).__init__()
self.flatten = Flatten()
self.d1 = Dense(128, activation='relu')
self.d2 = Dense(10, activation='softmax')
def call(self, x):
x = self.flatten(x)
x = self.d1(x)
y = self.d2(x)
return y
model = MnistModel()
学习课程:北京大学人工智能实践-TensorFlow2.0
以上是关于深度学习笔记_Keras六步法搭建网络的主要内容,如果未能解决你的问题,请参考以下文章
基于CNN卷积神经网络的TensorFlow+Keras深度学习的人脸识别