第三讲神经网络八股


本讲目标:使用八股搭建神经网络

  • 神经网络搭建八股
  • iris 代码复现
  • MNIST数据集
  • Fashion数据集

1、搭建神经网络八股sequential

用TensorFlow API:tf.keras搭建网络八股

六步法:

  1. import
  2. train,test(告知要喂入网络的训练集和测试集是什么,也就是要指定训练集的输入特征x_train和训练集的标签y_train,还可以指定测试集的输入特征x_test和测试集的标签y_test)
  3. model = tf.keras.models.Sequential()(在Sequential()中搭建网络结构,逐层描述每层网络,相当于走了一遍前向传播)
  4. model.compile()(在compile()中配置训练方法,告知训练时选择那种优化器,选择哪个损失函数,选择哪种评测指标)
  5. model.fit()(在fit()中执行训练过程,告知训练集和测试集的输入特征和标签,告知每个batch是多少,告知要迭代多少次数据集)
  6. model.summary(用summary()打印出网络的结构和参数统计)

以上六步是以后写代码的提纲。

Sequential()

model = tf.keras.models.Sequential([网络结构])  # 描述各层网络

Sequential() 可以认为是个容器,这个容器里封装了一个神经网络结构。

在Sequential()中要描述从输入层到输出层每一层的网络结构,每一层的网络结构可以是以下几种:

  1. 拉直层:tf.keras.Flatten(),这一层不包含计算,只是形状转换,把输入特征拉直成一维数组。
  2. 全连接层:tf.keras.layers.Dense(神经元个数, activation="激活函数", kernel_regularizer=哪种正则化)
    activation可选:relu,softmax,sigmoid,tanh等
    kernel_regularizer可选:tf.keras.regularizers.l1(),tf.keras.regularizers.l2()
  3. 卷积层:tf.keras.layers.Conv2D(fliters = 卷积核个数, kernel_size = 卷积核尺寸, strides = 卷积步长, padding = "valid" or "same")
  4. LSTM层(循环神经网络):tf.keras.layers.LSTM()

compile()

model.compile(optimizer = 优化器, loss = 损失函数, metrics = ["准确率"])

optimizer可选:

  • ‘sgd’ 或 tf.keras.optimizers.SGD(lr = 学习率, momentum = 动量参数)
  • ‘adagrad’ 或 tf.keras.optimizers.Adagrad(lr = 学习率)
  • ‘adadelta’ 或 tf.keras.optimizers.Adadelta(lr = 学习率)
  • ‘adam’ 或 tf.keras.optimizers.Adam(lr = 学习率, beta_1 = 0.9, beta_2 = 0.999)

loss可选:

  • ‘mse’ 或 tf.keras.losses.MeanSquaredError()
  • ‘sparse_categorical_crossentropy’ 或 tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False)
    有些神经网络的输出经过了softmax等函数的概率分布,有些则不经概率分布直接输出。可以认为from_logits在询问输出是否是原始数据。如果神经网络预测结果输出前经过概率分布,则为false,否则是true。

Metrics可选(告知网络评测指标):
在这里插入图片描述

fit()

model.fit(训练集的输入特征, 训练集的标签, batch_size =  , epochs = , 
			validation_data =(测试集的输入特征, 测试集的标签), 
			validation_split = 从训练集划分多少比例给测试集, 
			validation_freq = 多少次epoch测试一次)

summary()

可以打印出网格的结构和参数统计
在这里插入图片描述
改写鸢尾花的代码

import tensorflow as tf
from sklearn import datasets
import numpy as np

# train, test
# test可以选择在这里指定,也可以在fit函数中指定
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值