Tensorflow之搭建神经网络八股

步骤:

  • 导入模块
  • 划分训练集和测试集
  • 在Sequential()中或利用class搭建网络结构
  • 在compile()中配置训练方法,选择优化器,选择损失函数,选择评测指标
  • 在fit()中执行训练过程,告知训练集和测试集的输入特征和标签,batch级别,迭代次数
  • summery()打印网络的结构和参数

一:模块及方法介绍

  1. Sequential()

    model = tf.keras.models.Sequential([网络结构])

    用于描述各层网络

    用Sequential可以搭建出上层输出就是下层输入的顺序网络结构

    网络结构举例:

    • 拉直层:tf.keras.layers.Flatten(),这一层不做计算,只是将数据拉成一维数组

    • 全连接层:tf.keras.layers.Dense(神经元个数,activation=“激活函数”,kernel_regularizer=哪种正则化)

      其中,activation可选参数有,relu,softmax,sigmoid,tanh

      kernel_regularizer可选:tf.keras.regularizers.l1(),tf.keras.regularizers.l2()

    • 卷积层:tf.keras.layers.Conv2D(filters=卷积核个数,kernel_size=卷积核尺寸,strides=卷积步长,padding=“valid” or “same”)

    • LSTM层:tf.keras.layers.LSTM()

  2. compile()

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

    optimizer可选:

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

    loss可选:

    • “mse” or tf.keras.losses.MeanSquaredError()
    • “sparse_categorical_crossentropy” of tf.keras.bosses.SparseCategoricalCrossentropy(from_logits=False)

    Metrics可选:

    • “accuracy”:y_和y都是数值,如y_=[1],y=[1]
    • “categorical_accuracy”:y_和y都是独热码(概率分布),如y_=[0,1,0],y=[0.233,0.844,0.584]
    • “sparse_categorical_accuracy”:y_是数值,y是独热码(概率分布),如y_=[1],y=[0.233,0.844,.0.584]
  3. fit()

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

  4. summary()

    打印出网络的结构和参数统计

二:利用Sequential对鸢尾花进行预测

import tensorflow as tf
from sklearn import datasets
import numpy as np# 导入数据集
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target# 打乱数据集顺序
np.random.seed(seed=116)
np.random.shuffle(x_train)
np.random.seed(seed=116)
np.random.shuffle(y_train)
np.random.seed(seed=116)# 搭建网络结构
model = tf.keras.models.Sequential([tf.keras.layers.Dense(3,activation="softmax",kernel_regularizer=tf.keras.regularizers.l2())])# 优化
# 因为在搭建网络结构时,使用了softmax进行概率分布,所以此处的from_logits=False
# 对于metrics参数,因为数据集的标签值为数值,而预测结果为ont_hot编码形式,所以选择sparse_categorical_accuracy
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=["sparse_categorical_accuracy"])# 训练
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)# 打印网络结构和参数统计
model.summary()

结果展示:

三:使用class类封装一个网络结构

Sequential可以搭建顺序网络结构但无法写出一些带有跳连的非顺序网络结构,这个时候我们可以选择用类class搭建神经网络。只需将Sequential搭建网络结构的部分换成以下类即可,其余不变

class MyModel(Model):def __init__(self):# 继承父类属性super(MyModel,self).__init__()定义网络结构块def call(self.x):调用网络结构块,实现向前传播return y
model = MyModel()

四:以类的方式预测鸢尾花分类

import numpy as np
import tensorflow as tffrom sklearn import datasets
from tensorflow.keras import Model
from tensorflow.keras.layers import Dense# 导入数据集
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target# 打乱数据集顺序
np.random.seed(seed=116)
np.random.shuffle(x_train)
np.random.seed(seed=116)
np.random.shuffle(y_train)
np.random.seed(seed=116)# 搭建网络结构
class IrisModel(Model):def __init__(self):super(IrisModel,self).__init__()# 定义网络结构self.d1 = Dense(3,activation="sigmoid",kernel_regularizer=tf.keras.regularizers.l2())def call(self, x):y = self.d1(x)return ymodel = IrisModel()# 配置训练方法
# 因为在搭建网络结构时,使用了softmax进行概率分布,所以此处的from_logits=False
# 对于metrics参数,因为数据集的标签值为数值,而预测结果为ont_hot编码形式,所以选择sparse_categorical_accuracy
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=["sparse_categorical_accuracy"])# 训练
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)# 打印网络结构和参数统计
model.summary()

五:MNIST数据集

  1. 数据集介绍

    在Tensorflow中,MNIST数据集提供了6万张28*28像素点的09手写数字图片和标签,用于训练;提供了1万张28*28像素点的09手写数字图片和标签,用于测试。

  2. Sequential训练MNIST数据集

    import tensorflow as tf
    import matplotlib.pyplot as plt# 导入数据
    mnist = tf.keras.datasets.mnist
    (x_train,y_train), (x_test,y_test) = mnist.load_data()# 对数据归一化,即将数据转换为0~1之间的数,把输入特征的数值变小更适合神经网络吸收
    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"),  # 搭建第一层网络tf.keras.layers.Dense(10, activation="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)# 打印网络结构并统计信息
    model.summary()
    
  3. class训练MNIST数据集

    import tensorflow as tf
    import matplotlib.pyplot as pltfrom tensorflow.keras import Model
    from tensorflow.keras.layers import Dense
    from tensorflow.keras.layers import Flatten# 导入数据
    mnist = tf.keras.datasets.mnist
    (x_train,y_train), (x_test,y_test) = mnist.load_data()# 对数据归一化,即将数据转换为0~1之间的数,把输入特征的数值变小更适合神经网络吸收
    x_train, x_test = x_train/255.0,  x_test/255.0# 定义网络结构
    class MnistMode(Model):def __init__(self):super(MnistMode, self).__init__()self.flatten = Flatten()self.d1 = Dense(120, 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 ymodel = MnistMode()# 配置训练方法
    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)# 打印网络结构并统计信息
    model.summary()
    

六:FASHION数据集

  1. 数据集介绍

    提供6万张28*28像素点的衣裤等图片和标签,用于训练。

    提供1万张28*28像素点的衣裤等图片和标签,用于测试

    共分为10类,有T恤,裤子,套头衫,连衣裙,外套,凉鞋,衬衫,运动鞋, 包,靴子

  2. Sequentia训练FASHION数据集

    import tensorflow as tf
    import matplotlib.pyplot as pltfrom tensorflow.keras.datasets import fashion_mnist# 读取数据
    (x_train,y_train), (x_test,y_test) = fashion_mnist.load_data()# 数据归一化
    x_train, x_test = x_train/255, x_test/255# 定义网络结构
    model = tf.keras.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(120, activation="relu"),tf.keras.layers.Dense(10, activation="softmax")
    ])# 配置训练方法
    model.compile(optimizer=tf.keras.optimizers.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)# 查看网络结构及数据统计
    model.summary()
    
  3. class训练FAHION数据集

    import tensorflow as tf
    import matplotlib.pyplot as pltfrom tensorflow.keras.datasets import fashion_mnist
    from tensorflow.keras.models import Model
    from tensorflow.keras.layers import Flatten
    from tensorflow.keras.layers import Dense# 读取数据
    (x_train,y_train), (x_test,y_test) = fashion_mnist.load_data()# 数据归一化
    x_train, x_test = x_train/255, x_test/255# 定义网络结构
    class FashionModel(Model):def __init__(self):super(FashionModel, self).__init__()self.flatten = Flatten()self.d1 = Dense(120, 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 = FashionModel()# 配置训练方法
    model.compile(optimizer=tf.keras.optimizers.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)# 查看网络结构及数据统计
    model.summary()

Tensorflow之搭建神经网络八股相关推荐

  1. Tensorflow搭建神经网络八股及实现鸢尾花数据集分类

    tensorflow笔记系列文章均参考自中国大学Mooc上北京大学软件与微电子学院曹建老师的<Tensorflow笔记2>课程.曹建老师讲的非常棒,受益良多,强烈建议tensorflow初 ...

  2. DeepMind发布Sonnet 帮你用TensorFlow快速搭建神经网络

    去年 DeepMind 作出决定,将全部研究搬到 TensorFlow 框架上进行.近一年时间过去,回头来看,DeepMind 认为这项选择十分正确--许多模型的学习过程大幅加速:TensorFlow ...

  3. TensorFlow2.0学习笔记2-tf2.0两种方式搭建神经网络

    目录 一,TensorFlow2.0搭建神经网络八股 1)import  [引入相关模块] 2)train,test  [告知喂入网络的训练集测试集以及相应的标签] 3)model=tf.keras. ...

  4. Tensorflow初学者之搭建神经网络基本流程

    本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的, 讲的很好,浅显易懂,入门首选, 而且在github有代码, 想看视频的也可以去他的优酷里的频道找. Tensorflow 官网 神 ...

  5. TensorFlow学习笔记(九)tf搭建神经网络基本流程

    1. 搭建神经网络基本流程 定义添加神经层的函数 1.训练的数据 2.定义节点准备接收数据 3.定义神经层:隐藏层和预测层 4.定义 loss 表达式 5.选择 optimizer 使 loss 达到 ...

  6. 30行代码就可以实现看图识字!python使用tensorflow.keras搭建简单神经网络

    文章目录 搭建过程 1. 引入必需的库 2. 引入数据集 3. 搭建神经网络层 4. 编译神经网络模型 5. 训练模型 效果测试 大概几个月前,神经网络.人工智能等概念在我心里仍高不可攀,直到自己亲身 ...

  7. 【记录】本科毕设:基于树莓派的智能小车设计(使用Tensorflow + Keras 搭建CNN卷积神经网络 使用端到端的学习方法训练CNN)

    0 申明 这是本人2020年的本科毕业设计,内容多为毕设论文和答辩内容中挑选.最初的灵感来自于早前看过的一些项目(抱歉时间久远,只记录了这一个,见下),才让我萌生了做个机电(小车动力与驱动)和控制(树 ...

  8. Tensorflow学习笔记——搭建神经网络

    目录 1.搭建神经网络6步法 2.函数用法和介绍 (1)tf.keras.models.Sequential() (2)Model.compile() (3)model.fit() (4)model. ...

  9. 北京大学曹健——Tensorflow笔记 03 搭建神经网络

    透过vim ~/.vimrc 写入 set ts=4, set nu,保存退出来设定vim编辑器.自动换行,4个空格 计算图:只搭建神经网络,不运行运算,不计算结果. 上图中:x 为 1行,2列的张量 ...

  10. 曹健老师 TensorFlow2.1 —— 第三章 神经网络八股

    第一章 第二章 本章目的:使用 " 八股 " 搭建神经网络 3.1 搭建网络八股 Sequential 用 Tensorflow API:tf.keras 搭建网络八股 六步法: ...

最新文章

  1. 趁ofo退出美市场 Uber不计成本发展共享单车
  2. CM: How to get the complete url of a product attachment
  3. 关于Jakarta EE软件包名称更改的思考
  4. 问题与事务跟踪系统jira中的版本管理
  5. spikingjelly的20201221版本跑通ANN2SNN
  6. 10个每个开发人员都喜欢的JavaScript模式
  7. 自动基线校正 python_核磁共振谱自动基线校正新方法
  8. 五分钟上手ECharts教程
  9. vcenter server 添加主机失败
  10. Reducer类——hadoop
  11. Pocket PC C#
  12. 发布《IBM虚拟机J9指南》
  13. Js高级-函数的理解
  14. java翻译程序_有没有java代码翻译软件?
  15. html计时器重置的代码,javascript 秒表计时器实现代码
  16. PR模板如何使用?Premiere模板如何替换图片、视频及文字的PR模板使用教程
  17. jenkins shell 权限_Jenkins在shell脚本运行docker权限报错解决
  18. Curl学习日记2 - 在Windows CMD命令行中使用Curl
  19. 分账技术赋能农贸市场,重塑交易管理服务效能
  20. OpenCV的Rect()函数、Rectangle()函数、matchTemplate()参数详解

热门文章

  1. U3D学习项目一:2D横版小狐狸闯关游戏(代码部分一)
  2. PHP excel 直接输出导出
  3. 编码 面试_我的编码面试失败
  4. 企业要如何建立适合自己的PMF?
  5. 1分钟学会系统安装方法,win7 XP win10 win11都变得非常简单
  6. windows自动开关机教程
  7. 日志:每个软件工程师应该知道的实时数据的统一抽象概念
  8. Eclipse BIRT报表开发工具安装教程
  9. RabbitMQ队列、消息应答、持久化操作相关概念以及操作的详解
  10. 新手都能用到的140个电脑技巧