Tensorflow之搭建神经网络八股
Tensorflow之搭建神经网络八股
步骤:
- 导入模块
- 划分训练集和测试集
- 在Sequential()中或利用class搭建网络结构
- 在compile()中配置训练方法,选择优化器,选择损失函数,选择评测指标
- 在fit()中执行训练过程,告知训练集和测试集的输入特征和标签,batch级别,迭代次数
- summery()打印网络的结构和参数
一:模块及方法介绍
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()
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]
fit()
model.fit(训练集输入特征,训练集标签,batch_size=,epochs=,validation_data=(测试集输入特征,测试集标签),validation_split=从训练集划分多少比例给测试集,validation_freq=多少次epoch测试一次准确率)
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数据集
数据集介绍
在Tensorflow中,MNIST数据集提供了6万张28*28像素点的09手写数字图片和标签,用于训练;提供了1万张28*28像素点的09手写数字图片和标签,用于测试。
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()
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数据集
数据集介绍
提供6万张28*28像素点的衣裤等图片和标签,用于训练。
提供1万张28*28像素点的衣裤等图片和标签,用于测试
共分为10类,有T恤,裤子,套头衫,连衣裙,外套,凉鞋,衬衫,运动鞋, 包,靴子
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()
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之搭建神经网络八股相关推荐
- Tensorflow搭建神经网络八股及实现鸢尾花数据集分类
tensorflow笔记系列文章均参考自中国大学Mooc上北京大学软件与微电子学院曹建老师的<Tensorflow笔记2>课程.曹建老师讲的非常棒,受益良多,强烈建议tensorflow初 ...
- DeepMind发布Sonnet 帮你用TensorFlow快速搭建神经网络
去年 DeepMind 作出决定,将全部研究搬到 TensorFlow 框架上进行.近一年时间过去,回头来看,DeepMind 认为这项选择十分正确--许多模型的学习过程大幅加速:TensorFlow ...
- TensorFlow2.0学习笔记2-tf2.0两种方式搭建神经网络
目录 一,TensorFlow2.0搭建神经网络八股 1)import [引入相关模块] 2)train,test [告知喂入网络的训练集测试集以及相应的标签] 3)model=tf.keras. ...
- Tensorflow初学者之搭建神经网络基本流程
本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的, 讲的很好,浅显易懂,入门首选, 而且在github有代码, 想看视频的也可以去他的优酷里的频道找. Tensorflow 官网 神 ...
- TensorFlow学习笔记(九)tf搭建神经网络基本流程
1. 搭建神经网络基本流程 定义添加神经层的函数 1.训练的数据 2.定义节点准备接收数据 3.定义神经层:隐藏层和预测层 4.定义 loss 表达式 5.选择 optimizer 使 loss 达到 ...
- 30行代码就可以实现看图识字!python使用tensorflow.keras搭建简单神经网络
文章目录 搭建过程 1. 引入必需的库 2. 引入数据集 3. 搭建神经网络层 4. 编译神经网络模型 5. 训练模型 效果测试 大概几个月前,神经网络.人工智能等概念在我心里仍高不可攀,直到自己亲身 ...
- 【记录】本科毕设:基于树莓派的智能小车设计(使用Tensorflow + Keras 搭建CNN卷积神经网络 使用端到端的学习方法训练CNN)
0 申明 这是本人2020年的本科毕业设计,内容多为毕设论文和答辩内容中挑选.最初的灵感来自于早前看过的一些项目(抱歉时间久远,只记录了这一个,见下),才让我萌生了做个机电(小车动力与驱动)和控制(树 ...
- Tensorflow学习笔记——搭建神经网络
目录 1.搭建神经网络6步法 2.函数用法和介绍 (1)tf.keras.models.Sequential() (2)Model.compile() (3)model.fit() (4)model. ...
- 北京大学曹健——Tensorflow笔记 03 搭建神经网络
透过vim ~/.vimrc 写入 set ts=4, set nu,保存退出来设定vim编辑器.自动换行,4个空格 计算图:只搭建神经网络,不运行运算,不计算结果. 上图中:x 为 1行,2列的张量 ...
- 曹健老师 TensorFlow2.1 —— 第三章 神经网络八股
第一章 第二章 本章目的:使用 " 八股 " 搭建神经网络 3.1 搭建网络八股 Sequential 用 Tensorflow API:tf.keras 搭建网络八股 六步法: ...
最新文章
- 趁ofo退出美市场 Uber不计成本发展共享单车
- CM: How to get the complete url of a product attachment
- 关于Jakarta EE软件包名称更改的思考
- 问题与事务跟踪系统jira中的版本管理
- spikingjelly的20201221版本跑通ANN2SNN
- 10个每个开发人员都喜欢的JavaScript模式
- 自动基线校正 python_核磁共振谱自动基线校正新方法
- 五分钟上手ECharts教程
- vcenter server 添加主机失败
- Reducer类——hadoop
- Pocket PC C#
- 发布《IBM虚拟机J9指南》
- Js高级-函数的理解
- java翻译程序_有没有java代码翻译软件?
- html计时器重置的代码,javascript 秒表计时器实现代码
- PR模板如何使用?Premiere模板如何替换图片、视频及文字的PR模板使用教程
- jenkins shell 权限_Jenkins在shell脚本运行docker权限报错解决
- Curl学习日记2 - 在Windows CMD命令行中使用Curl
- 分账技术赋能农贸市场,重塑交易管理服务效能
- OpenCV的Rect()函数、Rectangle()函数、matchTemplate()参数详解