目录

一,TensorFlow2.0搭建神经网络八股

1)import  【引入相关模块】

2)train,test  【告知喂入网络的训练集测试集以及相应的标签】

3)model=tf.keras.models.Sequential  【在Sequential中搭建网络结构,相当于走一遍前向传播】

4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】

5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】

6)model.summary  【打印网络结构和参数统计】

二,用TensorFlow2.0实现iris分类

1)使用keras的Sequential方式实现

2)使用keras的class类搭建神经网络结构

三,用TensorFlow2.0训练MNIST数据集

1)使用keras的Sequential方式实现

2)使用keras的class类搭建神经网络结构

四,用TensorFlow2.0训练Fashion数据集

1)使用keras的Sequential方式实现

2)使用keras的class类搭建神经网络结构


一,TensorFlow2.0搭建神经网络八股

六步法:

1)import  【引入相关模块】

2)train,test  【告知喂入网络的训练集测试集以及相应的标签】

3)model=tf.keras.models.Sequential  【在Sequential中搭建网络结构,相当于走一遍前向传播】

  • model=tf.keras.models.Sequential([]网络结构)   # 描述各层网络结构,网络结构举例:
  • 拉直层:tf.keras.layers.Flatten()
  • 全连接层:tf.keras.layers.Dense(神经元个数,activation=“激活函数”,kernal_regularizer=哪种正则化), activation(字    符串给出),可选 relu、softmax、sigmoid、tanh; kernel_regularizer,可选tf.keras.regularizers.l1()、       tf.keras.regularizers.l2()
  • 卷积层:tf.keras.layers.Conv2D(flters=卷积核个数,kernel_size=卷积核尺寸,strides=卷积步长,padding="valid" or "same")
  • LSTM层:tf.keras.layers.LSTM()

4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】

  • model.compile(optimizer=优化器,loss=损失函数,metrics=【“准确率”】)
  • Optimizer可选:

‘sgd’ or 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.losser.MeanSquareeError()

'sparse_categorical_crossentropy'  or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)

  • Metrics可选:

‘accuracy’:y_和y都是数值,如y_=[1],y=[1]

'categorical_accuracy':y_和y都是独热码(概率分布)。如y_=[0,1,0], y=[0.256,0.695,0.048]

'sparse_categorical_accuracy':y_是数值,y是独热码(概率分布),如y_=[0,1,0], y=[0.256,0.695,0.048]

5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】

model.fit(训练集的输入特征,训练集的标签,

batch_size=,epochs=,

validation_data=(测试集的输入特征,测试集的标签),

validation_split=从测试集划分多少比例给测试集,

validation_freq=多少次epoch测试一次)

6)model.summary  【打印网络结构和参数统计】

二,用TensorFlow2.0实现iris分类

1)使用keras的Sequential方式实现

# 1)import  【引入相关模块】
import tensorflow as tf
from sklearn import datasets
import numpy as np# 2)train,test  【告知喂入网络的训练集测试集以及相应的标签】
x_train = datasets.load_iris().data
y_train = datasets.load_iris().targetnp.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)# 3)model=tf.keras.models.Sequential  【在Sequential中搭建网络结构,相当于走一遍前向传播】
model = tf.keras.models.Sequential([tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])# 4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])# 5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)# 6)model.summary  【打印网络结构和参数统计】
model.summary()

代码执行结果:

2)使用keras的class类搭建神经网络结构

class类模板:

#class MyModel(Model) model=MyModelclass MyModel(Model):def __init__(self):super(MyModel,self).__init__()定义网络结构块def call(self,x):调用网络结构块,实现前向传播return ymodel=MyModel()

Iris实例:

#class MyModel(Model) model=MyModelclass IrisModel(Model):def __init__(self):super(IrisModel,self).__init__()self.dl=Dense(3)def call(self,x):y=self.dl(x)     # 输入特征4,直接采用1层网络结构return ymodel=IrisModel()

实际整体代码: 

# 1)import  【引入相关模块】
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Model
from sklearn import datasets
import numpy as np# 2)train,test  【告知喂入网络的训练集测试集以及相应的标签】
x_train = datasets.load_iris().data
y_train = datasets.load_iris().targetnp.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)# 3) class MyModel()
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()# 4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])# 5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)# 6)model.summary  【打印网络结构和参数统计】
model.summary()

运行结果和上面的类似:

三,用TensorFlow2.0训练MNIST数据集

1)使用keras的Sequential方式实现

# 1)import  【引入相关模块】
import tensorflow as tf# 2)train,test  【告知喂入网络的训练集测试集以及相应的标签】
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# 3)model=tf.keras.models.Sequential  【在Sequential中搭建网络结构,相当于走一遍前向传播】
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(10, activation='softmax')
])# 4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])# 5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)# 6)model.summary  【打印网络结构和参数统计】
model.summary()

代码执行结果:

2)使用keras的class类搭建神经网络结构

# 1)import  【引入相关模块】
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Model# 2)train,test  【告知喂入网络的训练集测试集以及相应的标签】
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# 3) class MyModel()
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 ymodel = MnistModel()# 4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])# 5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)# 6)model.summary  【打印网络结构和参数统计】
model.summary()

执行结果:

四,用TensorFlow2.0训练Fashion数据集

另一个版本的TensorFlow2.0训练Fashion数据集:Fashion MNIST实战

1)使用keras的Sequential方式实现

# 1)import  【引入相关模块】
import tensorflow as tf# 2)train,test  【告知喂入网络的训练集测试集以及相应的标签】
fashion = tf.keras.datasets.fashion_mnist
(x_train, y_train),(x_test, y_test) = fashion.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0# 3)model=tf.keras.models.Sequential  【在Sequential中搭建网络结构,相当于走一遍前向传播】
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(10, activation='softmax')
])# 4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])# 5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)# 6)model.summary  【打印网络结构和参数统计】
model.summary()

执行结果:

2)使用keras的class类搭建神经网络结构

# 1)import  【引入相关模块】
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Model# 2)train,test  【告知喂入网络的训练集测试集以及相应的标签】
fashion = tf.keras.datasets.fashion_mnist
(x_train, y_train),(x_test, y_test) = fashion.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0# 3) class MyModel()
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 ymodel = MnistModel()# 4)model.compile  【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])# 5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)# 6)model.summary  【打印网络结构和参数统计】
model.summary()

执行结果:

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

  1. 5G NR - RACH学习笔记3 - RACH的两种接入类型

    CBRA(Contention Based - 基于竞争的随机接入) 基于竞争的RACH过程如下: 1) UE --> NW : MSG1(RACH Preamble, RA-RNTI-) 2) ...

  2. 开关电源环路学习笔记(4)-两种误差放大器的传递函数

    前面几节我们已经说明白了,在满足一定条件的时候,Buck开关电源可以看成是线性系统,并且可以是划分为4级的反馈控制系统. 1.反馈级:H(s) 2.放大和补偿级:Gc(s) 3.PWM调制级:Gpwm ...

  3. ActiViz学习点滴(四)——显示圆柱(两种方式构建圆柱体)

    程序修改如下: vtkSphereSource sphere = vtkSphereSource.New(); sphere.SetCenter(5, 5, 5); vtkCylinderSource ...

  4. Android学习笔记之Fragment的两种使用方法

    一.第一种方法: (1)Fragment的第一种使用方法是使用fragment加载单独的布局文件:(也就是xml的方式实现) 结构如下: activity_main.xml主要是在一个线性布局中添加两 ...

  5. mybatis学习笔记(2)两种配置实现增删改查

    第二天学习mybatis,发现框架的存在确实是省了我们很多时间,我们完全可以把一些操作简化,或者实现简单的封装提供我们使用.昨天是跟着教程云里雾里的实现了配置,今天再次使用就方便很多. String ...

  6. openvc学习笔记(4)——两种方法在没有环境下运行程序

    参考博客:http://blog.csdn.net/xiaowei_cqu/article/details/8066329 OpenCV的安装总结 我们下载的OpenCV安装包一般包括源码,示例,文档 ...

  7. WebStorm学习笔记001---webstorm-删除项目 两种方法

    webstorm上删除项目,竟然浪费了我十几分钟时间,这让我不得不很气愤的记录下来,以防像我一样的悲催男在webstorm js开发神器上删除项目都找不到. webstorm,首先关闭项目,然后移动到 ...

  8. Java学习笔记——显示当前日期的三种方式

    一.Date类:这是一种过时的表达方式 import java.util.Date; Date date = new Date();System.out.println((1900+date.getY ...

  9. java如何显示当天世界_Java学习笔记——显示当前日期的三种方式

    一.Date类:这是一种过时的表达方式 import java.util.Date;Date date = new Date(); System.out.println((1900+date.getY ...

最新文章

  1. python 写cs程序_Python cs.cmdutils包_程序模块 - PyPI - Python中文网
  2. Learn Python The Hard Way(20)
  3. HBuilderX 连接电脑的模拟器问题
  4. Android中Activity和task,活动亲和力,启动模式,活动状态以及生命周期,激活钝化
  5. css 中的伪类选择器before 与after
  6. 四叶草引导windows和linux,Windows环境下使用Clover四叶草引导双硬盘安装OSX 10.11.5原版镜像...
  7. MySQL数据库设置主从同步
  8. css设置自适应屏幕高度
  9. HTML教程(完整版).pdf,HTML教程详解(完整版).pdf
  10. Vue中自定义指令directive的使用
  11. 怎么拼魔方6个面方法_怎么拼齐魔方6个面
  12. 星际争霸1,如何有效提高apm和hotkey
  13. 利用VRRP功能实现简单的路由器备份(图)
  14. C语言的发展及其特点
  15. vue 默认加载某一子路由
  16. qs计算机专业排名2017,2017年qs计算机专业大学排名
  17. 学生管理系统(大数据实验室)
  18. 服务器的原点和限位信号,CANopen--基于DS402协议的伺服电机原点回零模式实现
  19. h5 微信公众号获取当前位置
  20. Autofac的基本使用

热门文章

  1. Win10开机取消微软登录密码
  2. word柱状图垂直轴数值设定_Excel图表中设置坐标轴的字体、图案格式、刻度格式和数字格式的方法...
  3. 如何实现多源异构系统数据整合?
  4. Chrome DevTools 通过 cdp 调节 CPU Throttling
  5. 怎样做好路演PPT/keynote
  6. 几何画板用迭代法作图的技巧
  7. Java使用opencv调用微信扫描二维码引擎,附带windows和linux需要的动态库文件
  8. 阿里云服务器购买及使用流程(新手入门图文教程)
  9. 制造业干货,只需3步,快速提高产品良率!
  10. ZOJ Yukari's Birthday