Tensorflow学习笔记2-Keras六步法搭建神经网络模型

六步法实现模型搭建

  1. 导入相关模块
  2. 导入训练集与测试集
  3. 搭建网络结构
  4. 配置训练方法
  5. 执行训练方法
  6. 打印出网络结构,参数统计

基本元素介绍

一、激活函数

激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。引入非线性激活函数,可使深
层神经网络的表达能力更加强大。激活函数非线性时,多层神经网络可逼近所有函数

常见的激活函数有 sigmoid、relu、softmax

小提示:平时在使用时,最后输出用softmax,其余基本都用relu

二、损失函数

神经网络模型的效果及优化的目标是通过损失函数来定义的。回归和分类是监督学习中的两个大
类。

1. 均方误差损失函数API:tf.keras.losses.MSE

回归问题中最常用的损失函数,回归问题解决的是对具体数值的预测,比如房价预测、销量预测等。这些问题需要预测的不是一个事先定义好的类别,而是一个任意实数。

2. 交叉熵损失函数API: tf.keras.losses.categorical_crossentropy,tf.nn.softmax_cross_entropy_with_logits, tf.nn.sparse_softmax_cross_entropy_with_logits

交叉熵(Cross Entropy)表征两个概率分布之间的距离,交叉熵越小说明二者分布越接近,是分 类问题中使用较广泛的损失函数。

3. 自定义损失函数

针对特定的任务和目的设计。

三、优化器

所谓的优化器,就是tensorflow中梯度下降的策略,用于更新神经网络中数以百万的参数。
常见优化器有:SGD梯度下降、RMSrop、Adagrad、Adam、Adadelta
需根据不同情况选用最合适的优化器,一般优先考虑Adam 或 SGD+Nesterov Mometum

利用六步法编写的模型代码如下

其中关键处见注释

#六步法实现模型搭建
#1.导入相关模块
import tensorflow as tf
#2.导入数据
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#对输入网络的输入特征进行归一化,将原本0~255的灰度值变为0~1的值,输入特征的数值变小更适合神经网络吸收
#3.用Sequential搭建网络结构
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),#将数组拉直,有784个神经元
    tf.keras.layers.Dense(128, activation='relu'),#128个神经元的全连接层
    tf.keras.layers.Dense(10, activation='softmax')#因为是10分类,故需要经过一个10分类的全连接层
])
#4.用compile配置训练方法
model.compile(optimizer='adam',#优化器,优先考虑Adam或者SGD+Nesterov Momentum
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),#设置损失函数
              metrics=['sparse_categorical_accuracy'])#选择标注网络评测指标

#5.用fit执行训练过程
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
#6.用summary打印出网络结构,和参数统计
model.summary()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值