我学tensorflow学的网课是:【北京大学】Tensorflow2.0 对于新手入门的话我觉得是很不错的
tensorflow官网:初学者的 TensorFlow 2.0 教程 | TensorFlow Core (google.cn)
我学习参考的笔记:Tensorflow学习 - 知乎 (zhihu.com)
以下内容是我对自己所学内容的一个复习:
class1
•当今人工智能主流方向——连接主义
•前向传播 •损失函数(初体会)
•梯度下降(初体会)
•学习率(初体会)
•反向传播更新参数
•Tensorflow 2 常用函数
一个具体过程:
搭建网络->喂入数据->前向传播->损失函数->梯度下降->反向传播
损失函数(loss function):预测值(y)与标准答案(y_)的差距。
梯度下降目的:想找到一组参数w和b,使得损失函数最小。
反向传播:从后向前,逐层求损失函数对每层神经元参数 的偏导数,迭代更新所有参数。
张量(Tensor):多维数组(列表)
阶:张量的维数
数据类型:
tf.int tf.float tf.bool tf.string
代码练习:如何创建一个Tensor
常用函数:
tf.cast()
tf.reduce_min()
tf.reduce_max()
tf.reduce_mean()
tf.reduce_sum()
tf.Variable()
tf.add()
tf.subtract()
tf.multiply()
tf.divide()
tf.square()
tf.pow()
tf.sqrt()
tf.matmul()
tf.data.Dataset.from_tensor_slices((输入特征, 标签))
tf.GradientTape()
axis=0(纵向) axis=1(横向)
enumerate()
tf.one_hot()
tf.nn.softmax(x) 使输出符合概率分布
assign_sub
tf.argmax()
学会导入数据集
from sklearn.datasets import load_iris
x_data = datasets.load_iris().data 返回iris数据集所有输入特征
y_data = datasets.load_iris().target 返回iris数据集所有标签
神经网络实现鸢尾花分类
准备数据->搭建网络->参数优化->测试效果->acc/loss可视化
class2
本讲目标:学会神经网络优化过程,使用正则化减少过拟合, 使用优化器更新网络参数
•预备知识
•神经网络复杂度
•指数衰减学习率
•激活函数
•损失函数
•欠拟合与过拟合
•正则化减少过拟合
•优化器更新网络参数
tf.where(条件语句,真返回A,假返回B)
np.random.RandomState.rand(维度)
np.vstack (数组 1,数组2)
np.mgrid[ ]
激活函数:
Sigmoid()
Tanh()
Relu() 初学者首选
Leaky Rule()
tf.losses.categorical_crossentropy(y_,y)
欠拟合与过拟合:
1.欠拟合的解决方法:
增加输入特征项
增加网络参数
减少正则化参数
2.过拟合的解决方法:
数据清洗
增大训练集
采用正则化
增大正则化参数
优化器:
SGD、SGDM、Adagrad、RMSProp、Adam
class3
本讲目标:使用八股搭建神经网络
•神经网络搭建八股
•iris代码复现
•MNIST数据集
•训练MNIST数据集
•Fashion数据集
用Tensorflow API:tf.keras搭建网络八股
import #导入相关的模块
train, test #输入数据集
model = tf.keras.models.Sequential 或 class MyModel(Model) model=MyModel #描述各层网络
model.compile #配置训练方法
model.fit #执行训练过程
model.summary #打印网络结构
class4
神经网络八股功能扩展:
1.自制数据集,解决本领域应用 generateds()
2.数据增强,扩充数据集 ImageDataGenrator()
3.断点续训,存取模型 load_weights()
4.参数提取,把参数存入文本 model.trainable_variables()
5.acc/loss可视化,查看训练效果
6.应用程序,给物识图
class5
目标:用CNN实现离散数据的分类
卷积计算过程
感受野
全零填充(Padding)
TF描述卷积计算层 批标准化(Batch Normalization, BN)
池化(Pooling)
舍弃(Dropout)
卷积神经网络
cifar10数据集
卷积神经网络搭建示例
实现LeNet、AlexNet、VGGNet、InceptionNet、ResNet五个经典卷积网络
卷积层
tf.keras.layers.Conv2D (
filters = 卷积核个数,
kernel_size = 卷积核尺寸, #正方形写核长整数,或(核高h,核宽w)
strides = 滑动步长, #横纵向相同写步长整数,或(纵向步长h,横向步长w),默认1
padding = “same” or “valid”, #使用全零填充是“same”,不使用是“valid”(默认)
activation = “ relu ” or “ sigmoid ” or “ tanh ” or “ softmax”等 , #如有BN此处不写
input_shape = (高, 宽 , 通道数) #输入特征图维度,可省略
)
TF描述卷积层
model = tf.keras.models.Sequential([
Conv2D(6, 5, padding='valid', activation='sigmoid'),
MaxPool2D(2, 2),
Conv2D(6, (5, 5), padding='valid', activation='sigmoid'),
MaxPool2D(2, (2, 2)),
Conv2D(filters=6, kernel_size=(5, 5),padding='valid', activation='sigmoid'),
MaxPool2D(pool_size=(2, 2), strides=2),
Flatten(),
Dense(10, activation='softmax')
])
标准化:使数据符合0均值,1为标准差的分布。
批标准化:对一小批数据(batch),做标准化处理 。
一个很好用的口诀:
CBAPD:C卷积 B批标准化 A激活 P池化 D舍弃
经典卷积网络:
LeNet:1998
AlexNet:2012
VGGNet:2014
InceptionNet:2014
ResNet:2015
class6
本讲目标:用RNN实现连续数据的预测(以股票预测为例)
回顾卷积神经网络
循环神经网络
循环核
循环核时间步展开
循环计算层
TF描述循环计算层
循环计算过程
实践:ABCDE字母预测
One-hot
Embedding
实践:股票预测
RNN
LSTM
GRU
TF描述循环计算层
tf.keras.layers.SimpleRNN(记忆体个数,activation=‘激活函数’ ,
return_sequences=是否每个时刻输出ht到下一层)
activation=‘激活函数’ (不写,默认使用tanh)
return_sequences=True 各时间步输出ht
return_sequences=False 仅最后时间步输出ht(默认)
例:SimpleRNN(3, return_sequences=True)
Embedding —— 一种编码方法:
tf.keras.layers.Embedding(词汇表大小,编码维度)
循环神经网络:RNN LSTM GRU