tensorflow学习笔记:神经网络优化(代码片段)

代表最低水平的hhhuster 代表最低水平的hhhuster     2023-01-09     455

关键词:

本文是个人的学习笔记,是跟随北大曹健老师的视频课学习的
附:bilibili课程链接MOOC课程链接 以及 源码下载链接 (提取码:mocm)

文章目录

一、预备知识

1. 条件判断和选择(where)

a = tf.constant([1, 2, 3, 1, 1])
b = tf.constant([0, 1, 3, 4, 5])
c = tf.where(tf.greater(a, b), a, b)  # 条件?T/N
print('c:'.format(c))

结果

c:[1 2 3 4 5]

2. [0, 1)随机数(random.RandomState.rand)

rdm = np.random.RandomState()
a = rdm.rand()  # scalar
b = rdm.rand(2, 3)
print('a=,\\n b='.format(a, b))

结果

a=0.7902641789078835,
b=[[0.25573684 0.43114347 0.05323669]
 [0.93982238 0.01915588 0.99566242]]

3. 数组垂直叠加(vstack)

rdm = np.random.RandomState()
a = rdm.rand(3)
b = rdm.rand(3)
c = np.vstack((a, b))
print('a=, b=, \\nc='.format(a, b, c))

结果

a=[0.61471964 0.41927043 0.76723631], b=[0.44699221 0.00728193 0.60133098], 
c=[[0.61471964 0.41927043 0.76723631]
 [0.44699221 0.00728193 0.60133098]]

4. 网格生成(mgrid,ravel,c_)

x, y = np.mgrid[1:3, 2:4:0.5]
grid = np.c_[x.ravel(), y.ravel()]
print('x=,\\ny=,\\ngrid='.format(x, y, grid))

结果

x=[[1. 1. 1. 1.]
 [2. 2. 2. 2.]],
y=[[2.  2.5 3.  3.5]
 [2.  2.5 3.  3.5]],
grid=[[1.  2. ]
 [1.  2.5]
 [1.  3. ]
 [1.  3.5]
 [2.  2. ]
 [2.  2.5]
 [2.  3. ]
 [2.  3.5]]

二、神经网络复杂度、学习率选取

1. 复杂度

空间:层数;时间:乘加运算次数。

2. 学习率更新

(1)影响

学习率过小 → \\rightarrow 更新过慢;学习率过大 → \\rightarrow 不收敛

(2)更新策略

这里老师推荐了指数衰减学习率
l r = l r 0 a ,       a = e p o c h / u p d a t e   s t e p lr=lr_0^a, ~~~~~a=epoch/update~step lr=lr0a,     a=epoch/update step
代码实现

for epoch in range(epoches):  # 每一次epoch遍历一次数据集
    Loss = 0
    lr = lr_base * lr_decay ** (epoch / lr_step)
    for step, (x_train, y_train) in enumerate(data_train):  # 每一个step遍历一个batch
        ...
    print('After  epoch, lr='.format(epoch, w1, lr))

结果

After 0 epoch, lr=0.2
After 1 epoch, lr=0.198
After 2 epoch, lr=0.19602
After 3 epoch, lr=0.1940598
After 4 epoch, lr=0.192119202
After 5 epoch, lr=0.19019800998
After 6 epoch, lr=0.1882960298802
After 7 epoch, lr=0.186413069581398
After 8 epoch, lr=0.18454893888558402
After 9 epoch, lr=0.18270344949672818
...
After 90 epoch, lr=0.08094639453566477
After 91 epoch, lr=0.08013693059030812
After 92 epoch, lr=0.07933556128440503
After 93 epoch, lr=0.07854220567156098
After 94 epoch, lr=0.07775678361484537
After 95 epoch, lr=0.07697921577869692
After 96 epoch, lr=0.07620942362090993
After 97 epoch, lr=0.07544732938470083
After 98 epoch, lr=0.07469285609085384
After 99 epoch, lr=0.07394592752994529

三、激活函数、损失函数

1. 几种激活函数介绍

(1) Sigmoid函数

y = σ ( x ) = 1 1 + e − x ,      d y d x = σ ′ ( x ) = y ( 1 − y ) y=\\sigma(x)=\\frac11+e^-x,~~~~\\fracdydx=\\sigma'(x)=y(1-y) y=σ(x)=1+ex1,    dxdy=σ(x)=y(1y)
简证
σ ′ ( x ) = d d x ( 1 + e − x ) − 1 = − ( 1 + e − x ) − 2 ⋅ e − x ⋅ ( − 1 ) = e − x ( 1 + e − x ) 2 = 1 1 + e − x e − x 1 + e − x = 1 1 + e − x ( 1 − 1 1 + e − x ) = y ( 1 − y ) \\sigma'(x)=\\fracddx(1+e^-x)^-1=-(1+e^-x)^-2\\cdot e^-x\\cdot (-1)=\\frace^-x(1+e^-x)^2=\\frac11+e^-x\\frace^-x1+e^-x=\\frac11+e^-x(1-\\frac11+e^-x)=y(1-y) σ(x)=dxd(1+ex)1=(1+ex)2ex(1)=(1+ex)2ex=1+ex11+exex=1+ex1(11+ex1)=y(1y)

特点:易造成梯度消失(导数值小于1,多层相乘之后趋于0);输出非0均值,收敛慢(一般数据都是服从标准正态分布的);幂运算复杂,训练时间长

(2) tanh函数

y = t a n h ( x ) = e x − e − x e x − e − x = 1 − e − 2 x 1 + e − 2 x ,      d y d x = t a n h ′ ( x ) = 1 − y 2 y=tanh(x)=\\frace^x-e^-xe^x-e^-x=\\frac1-e^-2x1+e^-2x,~~~~\\fracdydx=tanh'(x)=1-y^2 y=tanh(x)=exexexex=1+e2x1e2x,    dxdy=tanh(x)=1y2
简证:注意到 σ ( x ) + σ ( − x ) = 1 \\sigma(x)+\\sigma(-x)=1 tensorflow学习笔记---2--dcgan代码学习

...rks)的网络结构。代码下载地址https://github.com/carpedm20/DCGAN-tensorflow注1:发现代码中以mnist为训练集的网络和以无标签数据集(以下简称unlabeled_dataset)为训练集的网络不同,结构有别。以下笔记主要针对 查看详情

tensorflow2.0笔记(代码片段)

Tensorflow2.0笔记本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师目录Tensorflow2.0笔记6优化器6.1SGD6.1.1vanillaSGD6.1.2SGDwithMomentum6.1.3withNesteroyAcceleration6.2AdaGrad6.3RMSProp6优化器​ 优化算法可以分成一阶优化和二阶优化算法... 查看详情

tensorflow学习笔记:实现自编码器

...码器的非监督学习算法,书中的代码给出了一个隐藏层的神经网络,本人扩展到了多层,改进了代码。实现多层神经网络时,把每层封装成一个NetLayer对象(本质是单向链表),然后计算隐藏层输出值的时候,运用递归算法,最后... 查看详情

机器学习-随手笔记二(卷积神经网络tensorflow和iv值计算)(代码片段)

目录卷积神经网络: TensorFlow: IV信息价值和证据权重: 案例实战: IV值计算实战:TensorFlow2.0卷积神经网络:简介:简称CNN,20世纪60年代,Hubel和Wisesel在研究猫脑皮层中用于局部敏感和方向选择... 查看详情

tensorflow学习笔记--网络模型的保存和读取

...的笔记里实现了softmax回归分类、简单的含有一个隐层的神经网络、卷积神经网络等等,但是这些代码在训练完成之后就直接退出了,并没有将训练得到的模型保存下来方便下次直接使用。为了让训练结果可以复用,需要将训练... 查看详情

tensorflow2.0笔记(代码片段)

Tensorflow2.0笔记本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师目录Tensorflow2.0笔记6.4AdaDelta6.5Adam6.5优化器选择6.7优化算法的常用tricks6.8参考链接6.4AdaDeltaTensorFlowAPI:tf.keras.optimizers.Adadelta代码实现:#AdaDeltabeta=0.999v_w... 查看详情

tensorflow学习笔记

简单神经网络构造importtensorflowastfimportmatplotlib.pyplotaspltimportnumpyasnptf.set_random_seed(1)np.random.seed(1)fakedatax=np.linspace(-1,1,100)[:,np.newaxis]#shape(100,1)noise=np.random.normal(0,0.1,size 查看详情

tensorflow学习笔记(代码片段)

...器学习的一种技术,现在所说的深度学习很大层次上是指神经网络。神经网络是受人类大脑的启发:神经元之间的相互连接。对比看来,人类大脑中的神经元与特定范围内的任意神经元连接 查看详情

tensorflow实现cnn案例笔记(代码片段)

...例1案例2案例3案例4 Tensorflow和CNN: Tensorflow——卷积神经网络(CNN)卷积神经网络工作概述卷积整体结构示例:TensorFlow2 查看详情

tensorflow实战google深度学习框架笔记codepart(代码片段)

深层神经网络线性模型的局限性激活函数实现去线性化a=tf.nn.relu(tf.matmul(x,w1)+biases1)y=tf.nn.relu(tf.matmul(a,w2)+biases2)经典损失函数#计算交叉熵cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,le-10,1.0)))#tf.clip_by_value样例 查看详情

tensorflow学习笔记1

什么是TensorFlow? TensorFlow是Google开发的一款神经网络的Python外部的结构包,也是一个采用数据流图来进行数值计算的开源软件库.TensorFlow让我们可以先绘制计算结构图,也可以称是一系列可人机交互的计算操作,然后把编辑好的Pyth... 查看详情

深度学习之tensorflow模型优化和调优实例(代码片段)

...n。深度学习是机器学习的一个子集,深度学习主要是神经网络模型的构建和使用,神经网络通常有三层及以上层,神经网络模拟人大脑的数据处理和决策过程,深度学习在自然语言处理(语言识别和合成)... 查看详情

『tensorflow』ssd源码学习_其八:网络训练

Fork版本项目地址:SSD作者使用了分布式训练的写法,这使得训练部分代码异常臃肿,我给出了部分注释。我对于多机分布式并不很熟,而且不是重点,所以不过多介绍,简单的给出一点训练中作者的优化手段,包含优化器选择... 查看详情

tensorflow学习笔记五:mnist实例--卷积神经网络(cnn)

mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的。但是CNN层数要多一些,网络模型需要自己来构建。程序比较复杂,我就分成几个部分来叙述。首先,下载并加载数据:importtensorflowastfimporttensorflow.examples.... 查看详情

机器学习笔记-使用tensorflowlite从头创建模型(代码片段)

...义TensorFlowLite模型。在为设备上的ML应用程序部署TensorFlow神经网络模型时,它简化了调整模型并将其转换为特定输入数据的过程。目前,它支持图像分类、物体检测、文本分类、BERT问题解答、音频分类、推荐系统等。  ... 查看详情

tensorflow学习笔记(代码片段)

TensorFlow学习笔记一、常量表示importtensorflowastfm1=tf.constant([[3,3]])m2=tf.constant([[2],[3]])product=tf.matmul(m1,m2)print(product)sess=tf.Session()result=sess.run(product)print(result)sess.close()withtf.S 查看详情

基于cnn卷积神经网络的tensorflow+keras深度学习的人脸识别(代码片段)

基于CNN卷积神经网络的TensorFlow+Keras深度学习的人脸识别前言项目实现效果补充模型数据嵌入模型CNN神经网络模型项目概述项目运行流程核心环境配置项目核心代码详解目录核心代码设置数据集目录收集人脸识别数据——UUID格... 查看详情

《tensorflow实战google深度学习框架(第二版)》学习笔记及书评(代码片段)

《TensorFlow实战Google深度学习框架(第二版)》学习笔记文章目录《TensorFlow实战Google深度学习框架(第二版)》学习笔记写在前面1.TensorFlow图像处理函数学习总结2.TensorFlow图像预处理完整样例3.TensorFlow多线程输入... 查看详情