tensorflow2.0学习

数据类型

tensorflow中数据类型
在这里插入图片描述
tensorflow中可创建多种类型的变量,有int,float,double,bool,string

tensorflow的属性
在这里插入图片描述
注:在tensorflow2.0中,不需要name属性,是之前版本遗留问题;在tf2.0中,常使用shape属性查看参数

tensorflow中判断数据的类型
在这里插入图片描述

tensorflow中转换数据类型
在这里插入图片描述
在这里插入图片描述

tf.Variable
在这里插入图片描述
注:Variable是表示哪些变量需要求梯度

将tensor转换为numpy类型
在这里插入图片描述
调用numpy属性或者直接使用int(tensor)转换

创建tensor

从numpy,list数据转换
在这里插入图片描述
使用tf.convert_to_tensor

使用tf.zeros
在这里插入图片描述

使用tf.zeros_like
在这里插入图片描述
创建一个shape和传入的tensor变量一致的,内容全为0的tensor

使用tf.ones
在这里插入图片描述
类似tf.zeros,创建一个全为1的tensor

使用tf.fill
在这里插入图片描述
创建一个全为指定数值的tensor

使用Normal
在这里插入图片描述
tf.random.normal会创建一个指定shape,指定均值方差,分布为正态分布的随机tensor变量。
若不指定均值方差,默认为N(0, 1)
tf.random.truncated_normal会将正态分布范围裁剪一部分,裁剪两边远离峰值部分,以免出现梯度离散
在这里插入图片描述

使用uniform
在这里插入图片描述
指定shape,min~max范围的均匀分布的随机初始化tensor

随机打散
在这里插入图片描述

使用tf.constant
在这里插入图片描述

tensorflow中的类型样式

标量scalar
loss,accuracy

vector
bias

matrix
weight

tensor
注:在tensorflow中,vector、matrix其实都可视为tensor

索引和切片

索引

tensor和numpy类似
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:…表示全部选择,在…前面的从前往后取,在…后面的从后往前取

切片

使用tf.gather
在这里插入图片描述
可指定维度,并可在指定维度上选择特定的数据,并按照一定的顺序排列

使用tf.gather_nd
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:若直接取某一学生的成绩,是标量;需要再额外加一层方括号转变为tensor

使用tf.boolean_mask
在这里插入图片描述

维度变换

reshape
在这里插入图片描述
注:使用-1,是将tensor除指定维度之外的所有维度自动计算,并合并为一个维度
在这里插入图片描述

tf.transpose
在这里插入图片描述
在这里插入图片描述

增减维度

expand_dims
在这里插入图片描述
在这里插入图片描述

squeeze
在这里插入图片描述
注:若不指定轴,将tensor中等于1的维度全部去除;指定轴时,若等于1,去除,若不等于1,不变

Broadcasting

前提条件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

tf.broadcast_to
在这里插入图片描述
如果两个tensor直接计算,会隐式调用tf.broadcast_to,也可自己显示调用

broadcast vs tile
在这里插入图片描述
tf.tile后面跟着的是复制次数
注:broadcast它并没有真正的复制,占用内存空间小;tile确实进行了复制,占用内存空间大。常使用broadcast

数学运算

在这里插入图片描述
基本运算
在这里插入图片描述

log exp
在这里插入图片描述
log2,log10
在这里插入图片描述

平方 开方
在这里插入图片描述

矩阵相乘
在这里插入图片描述
3维及以上矩阵相乘
在这里插入图片描述
最后两维进行矩阵相乘,前面的维度需保持一致

复合运算
在这里插入图片描述
在这里插入图片描述

合并与分割

concat
在这里插入图片描述
注:使用时除指定维度,其它维度需要保持一致

stack
在这里插入图片描述
stack会创建一个新的维度
注:所有维度需要保持一致

unstack
在这里插入图片描述
注:在unstack的轴上,有几个就分为几个,见split

split
在这里插入图片描述

数据统计

范数
在这里插入图片描述

tf.norm
在这里插入图片描述
在这里插入图片描述

reduce_min/max/mean在这里插入图片描述

argmax/argmin
在这里插入图片描述
tf.equal
在这里插入图片描述

组合运用,求accuracy
在这里插入图片描述

tf.unique
在这里插入图片描述

张量排序

sort、argsort
在这里插入图片描述
在这里插入图片描述

top_k
在这里插入图片描述

top_k Accuracy
在这里插入图片描述
在这里插入图片描述

填充与复制

pad
在这里插入图片描述
在这里插入图片描述

pad中方括号中的参数说明:第一个方括号代表在第一个维度进行填充,第一个数字表示在之前添加多少行,第二个数字代表在之后添加多少行;第二个方括号代表在第二个维度进行填充,第一个数字表示在之前添加多少列,第二个数字代表在之后添加多少列

在这里插入图片描述

vs tile
在这里插入图片描述
tile是在方括号对应的维度上复制的次数

张量限幅

根据value限幅
在这里插入图片描述
relu
在这里插入图片描述

根据norm限幅
在这里插入图片描述

根据gradient限幅
在这里插入图片描述

高阶特性

where
在这里插入图片描述
在这里插入图片描述
注:where(cond, A, B),true,取A的值;false,取B的值

scatter_nd
在这里插入图片描述
在这里插入图片描述

meshgrid linspace
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据加载

在这里插入图片描述

tf.data.Dataset

在这里插入图片描述
在这里插入图片描述

map
在这里插入图片描述
map可传入一个函数进行预处理

在这里插入图片描述

repeat
在这里插入图片描述

example
在这里插入图片描述

全连接层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sequential
在这里插入图片描述

输出方式

MSE
在这里插入图片描述

sigmoid
在这里插入图片描述
将其转到0~1之间
在这里插入图片描述

softmax
在这里插入图片描述
转换到0~1之间,并且和为1
在这里插入图片描述
tanh
在这里插入图片描述

误差计算

MSE
在这里插入图片描述
在这里插入图片描述

Entropy
在这里插入图片描述
在这里插入图片描述

cross entropy
在这里插入图片描述
cross
在这里插入图片描述
cross entropy常用于分类问题

使用cross entropy的一些注意事项
在cross entropy中默认包含了softmax
在这里插入图片描述
在这里插入图片描述

梯度下降

在这里插入图片描述
在这里插入图片描述
若想要求导的某个参数不是Variable类型,可使用tape.watch

求二阶导数
在这里插入图片描述
在这里插入图片描述

tensorboard可视化

Step1.run listen
在这里插入图片描述

Step2.build summary
在这里插入图片描述

Step3.fed scalar
在这里插入图片描述

如果需要显示图片,前两部步不变
显示单张图片
在这里插入图片描述
如果需要显示多张图片,需要我们自己将多张图片合并为一张图片,如果直接使用tensorflow自带的api,会出现以下现象
在这里插入图片描述
在这里插入图片描述
合并后
在这里插入图片描述
在这里插入图片描述

Keras高层API

Metrics

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

compile fit

compile
之前
在这里插入图片描述
之后
在这里插入图片描述
可将求导过程加入其中

fit
之前
在这里插入图片描述
在这里插入图片描述
之后
在这里插入图片描述
fit的参数中validation_step应该改为validation_freq,表示训练多少个epoch就进行一次测试

evaluate
在这里插入图片描述

自定义网络

在这里插入图片描述
在这里插入图片描述

模型保存与加载

在这里插入图片描述
在这里插入图片描述
save_weights只保存参数,使用load_weights加载时,需要重新重建模型

在这里插入图片描述
使用save保存时,会将参数和模型全部保存,使用load导入时,可以直接导入

一种工业常用的模型保存方法
在这里插入图片描述
saved_model不仅是一个函数,还是一种协议。使用这种方法可以使模型能够被其它语言使用,更加通用

过拟合和欠拟合

交叉验证

在这里插入图片描述
tensorflow中也有简便的方法调用
在这里插入图片描述

regularization

在这里插入图片描述
如何添加
添加方法一:
在这里插入图片描述

添加方法二:
在这里插入图片描述

动量与学习率

动量
在这里插入图片描述
有些优化器已经将动量考虑在内了,不需要我们设置,如:Adam优化器

学习率衰减
在这里插入图片描述

一些其它训练trick

early stopping
在这里插入图片描述
防止过拟合

dropout
在这里插入图片描述
在这里插入图片描述注:在训练时,network应设置training为True;测试时,network应设置training为False
在这里插入图片描述

卷积神经网络

注:在tensorflow中,image的tensor顺序是[b, h, w, c]
layer.Conv2D
在这里插入图片描述
在这里插入图片描述

nn.conv2d
在这里插入图片描述

卷积神经网络的梯度

在这里插入图片描述

池化与采样

在这里插入图片描述

上采样
在这里插入图片描述

在这里插入图片描述

BatchNorm

在这里插入图片描述

Batch Norm是在channel上进行的,即不同图片的同一通道进行batch norm

在这里插入图片描述
训练参数:β和γ

在这里插入图片描述
在这里插入图片描述
BatchNormalization不写参数默认axis=-1,center=True,scale=True,trainable=True

在这里插入图片描述
运用于image
在这里插入图片描述
Forward
在这里插入图片描述

Backward
在这里插入图片描述

ResNet

在这里插入图片描述
在这里插入图片描述

RNN Layer使用

Single layer RNN Cell
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Multi-Layers RNN
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

RNN Layer
在这里插入图片描述
通过指定units实现转换

LSTM

LSTM cell
在这里插入图片描述
在这里插入图片描述

LSTM Layer
在这里插入图片描述

GRU

在这里插入图片描述
GRU cell
在这里插入图片描述
在这里插入图片描述

GRU Layer
在这里插入图片描述

### 回答1: 学习率衰减是指在训练神经网络时,随着训练的进行,逐渐降低学习率的过程。这样做的目的是为了让模型在训练初期快速收敛,而在训练后期避免过拟合。在TensorFlow 2.0,可以通过使用tf.keras.optimizers的learning_rate_scheduler来实现学习率衰减。常见的学习率衰减方法有Step Decay、Exponential Decay、Cosine Decay等。 ### 回答2: 学习率衰减是指在训练神经网络时,随着训练的进行,逐渐减小学习率的过程。在本文,我们将介绍TensorFlow 2.0学习率衰减的方法和实现。 TensorFlow 2.0学习率衰减有三种实现方式:时间衰减、余弦退火和指数衰减。其,指数衰减是最常用的方法,因为它非常简单且易于调整,同时也有良好的效果。 指数衰减通过指数函数逐渐减小学习率,可以实现快速收敛和防止过拟合。具体实现方式为: ```python initial_learning_rate = 0.1 # 初始化学习率 decay_steps = 10000 # 衰减步数 decay_rate = 0.96 # 衰减率 step = tf.Variable(0, trainable=False) # 定义指数衰减函数 learning_rate = tf.compat.v1.train.exponential_decay(initial_learning_rate, step, decay_steps, decay_rate, staircase=True) # 定义优化器 optimizer = tf.keras.optimizers.SGD(learning_rate) ``` 在上述代码,我们首先定义了初始学习率、衰减步数和衰减率,然后通过指数衰减函数逐步减小学习率。最后,我们使用SGD优化器来训练模型。 除了指数衰减,TensorFlow 2.0还支持余弦退火和时间衰减。其,余弦退火在训练初期较快地减小学习率,在接近最优解时较慢地减小学习率,从而有效地避免了局部最优解;时间衰减则类似于指数衰减,只是减小学习率的速度不同。 总之,在训练神经网络时使用学习率衰减可以加速收敛、防止过拟合和提高模型的泛化能力。TensorFlow 2.0提供了三种学习率衰减的实现方式,其指数衰减是最常用的方法,也是最简单易用的方法。 ### 回答3: 学习率衰减是一种优化算法,它可以帮助更好地训练深度神经网络,并且可以提高模型的准确性和泛化能力。Tensorflow2.0提供了许多学习率衰减函数,可以在训练模型时轻松地应用它们。 学习率衰减可以理解为一种策略,它会随着训练的进行,逐渐减小模型参数的更新量。这是因为在初始训练阶段,学习率越大,模型参数更新越大,但随着训练的进行,参数更新越来越小,这样会使模型达到一个比较稳定的状态。如果学习率不改变,则可能会导致模型过拟合,并且训练时间可能会更长。 Tensorflow2.0提供了三种不同的学习率衰减方式:指数衰减、多项式衰减和余弦衰减。其指数衰减方式是最常用的方法,它会通过一个指数函数来不断减小学习率,每次减小的程度也可以进行设置。多项式衰减方式会通过一个多项式函数来不断减小学习率,而余弦衰减则会根据余弦函数不断减小学习率。 学习率衰减不仅可以提高模型的准确性和泛化能力,还可以在遇到局部极小值时,帮助模型跳出局部极小值,更快地找到全局最优解。在使用学习率衰减时,需要注意一些常见的问题,例如衰减率、衰减周期、起始学习率等等。这些参数需要根据具体情况进行设置,以获得更好的训练效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值