TensorFlow的神经网络设计讲解

TensorFlow中的梯度裁剪(Gradient Clipping) 梯度爆炸是深度学习中十分常见的现象,有时会导致寻优过程不收敛,或者算出来的结果干脆直接溢出,例如在Python里都是Nan,使迭代无法继续下去。TensorFlow里提供了一系列简单可行的梯度裁剪函数,方便我们对超过阈值的梯度值进行规约,使优化算法相对更加数值稳定。 TensorFlow里提供的几个Gradient Clipping函数都是以clip_by开头,分别是tf.clip_by_nor... 阅读详情

核心知识讲解:

过程:输入特征=>模型预测=>根据结果计算一下损失(损失就是距离target的差距),然后将参数更新,再放回模型中预测,直至收敛,使得损失变得最小,这时候的参数就是我们想要的参数


  • 梯度 (gradient):偏导数相对于所有自变量的向量。在机器学习中,梯度是模型函数偏导数的向量。梯度指向最速上升的方向。
  • 梯度下降法 (gradient descent):一种通过计算并且减小梯度将损失降至最低的技术,它以训练数据为条件,来计算损失相对于模型参数的梯度。通俗来说,梯度下降法以迭代方式调整参数,逐渐找到权重和偏差的最佳组合,从而将损失降至最低。

假设我们能够将所有种可能情况全都计算一遍,那么得到的一定是一个类似于这样的碗状图,在其中必定有一点是损失最低的点,但是现实种我们肯定不会有那么大的计算能力和时间去计算出每个结果,我们通常采用一种叫做梯度下降法的方式来"快速"的找到损失最低的点(梯度下降法属于一种优化算法,虽然并不是最好的优化算法,但是其方式简单,应用也很多)。

  • 起点是随意选定的,因为在预测的开始时,没有人知道权重(w1,w2,w3..b)该是什么,可以设置为0,也可以设置为1,无所谓。通过模型一次计算,计算得出损失(这时候损失并不重要,肯定极大,没有参考意义),然后计算起点处的偏导数(如果只有一个权重那就是导数了),得出起点处的偏导数,而梯度是偏导数的矢量(即包含了此处偏导数的方向和大小),可以想象一下抛物线y=ax²+bx+c 在x0处的导数,其大小的绝对值是随着x0的值而变化的,并且有正负之分,绝对值大小代表大小,正负代表方向,所以依据梯度就可以确定权重值调节的方向。
  • 至此,调节的基本原理说的就差不多了,那么剩下的问题就是如何更好的优化,以便用最少的计算量最快的速度去达到目的。

  • 学习速率(也称为步长)

如果让其按照每个点本身的梯度大小来调节权值,那实在是太慢了,所以我们可以为其乘上一个学习速率,意如其名,这样可以人手动的调节学习速率(或许有的人会担心,当即将逼近损失最小的点时,这样会不会不太准确了,放心好了,我们并不需要那么的准确的权值,99%和98%的区别不是太大,但是所要付出的计算量却是超大的)

附上谷歌提供的:优化学习速率体验

下面是两种个效果更好的梯度下降算法方案,第二种更优
随机梯度下降法 (SGD) :它每次迭代只使用一个样本(批量大小为 1)。“随机”这一术语表示构成各个批量的一个样本都是随机选择的。(假设有10000个样本,每次从中随机选一个来执行梯度下降)

小批量随机梯度下降法(小批量 SGD)是介于全批量迭代与 SGD 之间的折衷方案。小批量通常包含 10-1000 个随机选择的样本。小批量 SGD 可以减少 SGD 中的杂乱样本数量,但仍然比全批量更高效。(每次随机选一批)

注意:为了安全起见,我们还会通过 clip_gradients_by_norm 将梯度裁剪应用到我们的优化器。梯度裁剪可确保梯度大小在训练期间不会变得过大,梯度过大会导致梯度下降法失败。

神经网络的常见模板代码如下:

import tensorflow as tf
import numpy as np

"""
这里是一个非常好的大数据验证结果,随着数据量的上升,集合的结果也越来越接近真实值,
这也是反馈神经网络的一个比较好的应用
这里不是很需要各种激励函数
而对于dropout,这里可以看到加上dropout,loss的值更快。
随着数据量的上升,结果就更加接近于真实值。
"""

inputX = np.random.rand(3000,1)
noise = np.random.normal(0, 0.05, inputX.shape)
outputY = inputX * 4 + 1 + noise

#这里是第一层
weight1 = tf.Variable(np.random.rand(inputX.shape[1],4))
bias1 = tf.Variable(np.random.rand(inputX.shape[1],4))
x1 = tf.placeholder(tf.float64, [None, 1])
y1_ = tf.matmul(x1, weight1) + bias1
#这里是第二层
weight2 = tf.Variable(np.random.rand(4,1))
bias2 = tf.Variable(np.random.rand(inputX.shape[1],1))
y2_ = tf.matmul(y1_, weight2) + bias2

y = tf.placeholder(tf.float64, [None, 1])

loss = tf.reduce_mean(tf.reduce_sum(tf.square((y2_ - y)), reduction_indices=[1]))
train = tf.train.GradientDescentOptimizer(0.25).minimize(loss)  # 选择梯度下降法

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

for i in range(1000):
    sess.run(train, feed_dict={x1: inputX, y: outputY})

print(weight1.eval(sess))
print("---------------------")
print(weight2.eval(sess))
print("---------------------")
print(bias1.eval(sess))
print("---------------------")
print(bias2.eval(sess))
print("------------------结果是------------------")

x_data = np.matrix([[1.],[2.],[3.]])
print(sess.run(y2_,feed_dict={x1: x_data}))
 

使用TensorFlow构建,绘制和解释人工神经网络 TensorFlow也提供了一个绘制模型结构的工具,你可能希望将其用于具有更复杂层(CNN,RNN等)的更复杂的神经网络。现在,模型的训练将继续,将输出与目标进行比较,计算误差并优化权重,一次又一次地重复整个过程。在回归模型,即线性回归中,您必须找到最佳权重,在基于树的模型(即随机森林)中,这是关于找到最佳拆分点......神经网络基于一组连接的单元(神经元),就像大脑中的突触一样,可以将信号传递给其他神经元,因此,就像相互连接的脑细胞一样,它们可以以更像人类的方式学习和做出决定。 阅读详情

相关推荐

tensorflow2.0搭建神经网络,tensorflow实现bp神经网络

第二,在程序退出时,训练好的模型就无法再利用,且大型神经网络的训练时间都比较长,在训练过程中需要每隔一段时间保存一次模型训练的中间结果,这样如果在训练过程中程序死机,死机前的最新的模型参数仍能保留,杜绝了时间和资源的浪费。第二,在程序退出时,训练好的模型就无法再利用,且大型神经网络的训练时间都比较长,在训练过程中需要每隔一段时间保存一次模型训练的中间结果,这样如果在训练过程中程序死机,死机前的最新的模型参数仍能保留,杜绝了时间和资源的浪费。# 调用 sess 的 #39;product#39;

aifans_bert的博客 1286

tensorflow学习3 -- 建立网络详解

首先总结一下核心过程: 导入数据,建立网络,设置相关标准,进行训练,评估模型,进行预测。 导入数据要具体问题具体分析,因此我先了解一下建立网络。 官网教程 深度学习笔记 构建网络的代码 你可以通过将网络层实例的列表传递给 Sequential 的构造器,来创建一个 Sequential 模型: from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential([ Den

我是谁我在哪我在学什么 2156

神经网络(Neural Network)

神经网络基础到应用

ningmengjing_的博客 3960

TensorFlow框架(1)之Computational Graph详解

1. Getting Start 1.1 import   TensorFlow应用程序需要引入编程架包,才能访问TensorFlow的类、方法和符号。如下所示的方法: import tensorflow as tf 2. Tensor   TensorFlow用Tensor这种数据结构来表示所有的数据。可以把一个Tensor想象成一个...

a567676的博客 363

tensorflow学习笔记

优化算法可以分成一阶优化和二阶优化算法,其中一阶优化就是指的梯度算法及其变种,而二阶优 化一般是用二阶导数(Hessian矩阵)来计算,如:预测酸奶销量,酸奶成本(COST)1元,酸奶利润(PROFIT)99元。预测少了损失利润99元,大于预测多了损失成本1元。如牛顿法,由于需要计算Hessian阵和其逆矩阵,计算 量较大,因此没有流行开来。正则化在损失函数中引入模型复杂度指标,利用给W加权值,弱化了训练 数据的噪声(一般不正则化b)预测少了损失大,希望生成的预测函数往多了预测。

小硕算法工程师 1008

TensorFlow实战基于图神经网络的推荐系统模型构建与优化

综上所述,利用TensorFlow构建基于图神经网络的推荐系统,是一个将强大深度学习框架与先进图学习理念相结合的过程。从基础的图卷积操作到复杂的采样、负例选择和损失函数设计,每一个环节都直接影响着模型的最终效果。尽管面临冷启动、动态性和可扩展性等挑战,但GNN在捕获推荐系统中复杂、高阶关系方面展现出的巨大潜力,使其成为当前推荐技术发展的前沿方向。随着算法、框架和硬件技术的不断进步,基于GNN的推荐模型必将在工业界发挥越来越重要的作用,为用户带来更智能、更精准的个性化体验。

rhengli的博客 493

TensorFlow笔记【五】六步法搭建神经网络

六步法搭建神经网络

科小勒的博客 843

人工智能入门实战:用TensorFlow实现神经网络模型

1.背景介绍 大家好,我是作者Jay,目前就职于某公司担任CTO一职。这是我的人工智能入门实战系列文章的第一篇,将会从零到一介绍如何用TensorFlow构建一个神经网络模型,并在MNIST手写数字识别任务上训练、评估、预测模型的能力。由于我们实战的重点不是深度学习的原理,而是一步步构建一个实际的完整项目,所以文章中不会有太多数学公式推导,只会以实例的

AI天才研究院 214

tensorflow案例1--天气识别,包含(Tensorflow的检查是否GPU、图像数据加载与划分、拿取动态加载的数据、内存优化、神经网络构建、模型超参数设计、模型训练)API讲解

tensorflow如何检查是否GPU、图像数据加载与划分、拿取动态加载的数据、内存优化、神经网络构建、模型超参数设计、模型训练?????

羊小猪~~的博客 1244

TensorFlow框架中神经网络模型设计流程

网络模型的实际计算过程会复杂的多,输出的结果往往也与输入数据不再具有相同的维度,这是因为我们需要的模型功能不尽相同。在前向传播过程中,我们完成了模型结构的设计,在反向传播中,我们完成了模型内参数的调整优化,此时,就需要将这二者都保存起来,在需要的时候重新组合在一起,实现具体的识别任务。该环节规定了模型的输入数据形式,计算的过程函数,以及输出数据的形式,这里的数据形式主要指的是数据的矩阵维度以及数值类型。如动物识别中的输入数据就是动物的照片,而照片型的输入数据就需要规范照片的宽高大小,以及颜色通道模式。

搏博的专栏 404

TensorFlow中构建卷积神经网络的实践指南

MNIST(Mixed National Institute of Standards and Technology)数据集是一个广泛用于手写数字识别的大型数据库,包含60,000个训练样本和10,000个测试样本。每个样本由28x28像素的灰度图像组成,图像表示0-9的单个手写数字。由于其简明性和代表性,MNIST成为了深度学习领域的一个标准入门案例。尽管数据集本身是为机器学习的“Hello World”程序设计的,但它依然具有一定的挑战性。

weixin_31688273的博客 863

Tensorflow入门——利用神经网络实现线性回归的预测

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34376562的博客 1777

模电学习笔记(十二)——跨阻放大器

模电学习笔记(十二) 跨阻放大器 跨组运算放大器是将电流信号转换成为电压信号,电流到电压增益基于反馈电阻。 设计目标: 输入 输出 带宽 电源 0A 100uA 0V 7V 20kHz 15V -15V 1.计算R1的值(增益电阻器) 2.计算C1的值满足电路带宽 ...

tang11081023的博客 2万+

人工神经网络理论、设计及应用_TensorFlow深度学习应用实践:教你如何掌握深度学习模型及应用...

前言通过TensorFlow图像处理,全面掌握深度学习模型及应用。全面深入讲解反馈神经网络和卷积神经网络理论体系。结合深度学习实际案例的实现,掌握TensorFlow程序设计方法和技巧。着重深度学习实际应用程序开发能力和解决问题能力的培养。TensorFlow作为最新的、应用范围最为广泛的深度学习开源框架自然引起了广泛的关注,它吸引了大量程序设计和开发人员进行相关内容的开发与学习。掌握Tensor...

weixin_39561577的博客 232

网络可视化工具netron详细安装流程

netron安装目录1.netron 简介2.不同操作系统下的安装使用方式2.1 在线版本:只要有浏览器就可以2.2 不同操作系统安装使用3.netron支持的网络框架4.netron测试演示 1.netron 简介 在实际的项目中,经过会遇到各种网络模型,需要我们快速去了解网络结构。如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构。 这时,就可以使用netron可视化工具,可以清晰的看到每一层的输入输出,网络总体的架构,而且支持各种不同网络框架,简单好用。 2.不同操作系统下的安装使用方式 2.1

江南研习社 12万+

差分隐私(Differential Privacy)

差分隐私,拉普拉斯机制和高斯机制的证明

Michale_L的博客 1万+

Tensorflow搭建第一个神经网络

使用Tensorflow搭建神经网络神经网络基本结构:输入层,隐含层和输出层上图说明:在输入层输入数据,然后数据飞到隐藏层,最后飞到输出层,用梯度下降处理,梯度下降会对几个参数进行更新和完善,更新后的参数再次跑到隐藏层去学习,一直循环至结果收敛。神经网络内部结构参数:激励函数:这些函数与其他层的输出联合使用可生成特征途。用于对某些运算的结果进行平滑(或微分),目标是为神经网络引入非线性。激励函数种...

wenting521的博客 493

SAP BTP-Cloud foundry 构建并部署JAVA应用程序

本文为 SAP BTP Java 应用程序的简单实例, 我们可以用此实例来熟悉SAP BTP 中的java应用开开发流程.在你完成改示例java应用程序以后, 我们可以直接使用该java应用程序进行后续的开发流程, 或直接构建一个新的JAVA应用程序来支持新的业务开发。

seyafly的博客 803

TensorFlow实战:Chapter-2(TensorFlow入门)

TensorFlow计算模型-计算图 计算图的简单示例 计算图的使用 创建新的计算图 管理计算图等资源 图相关的api函数 Tensorflow数据模型-张量 张量结构 name属性 shape属性 type属性 TensorFlow中types相关属性 在TensorFlow中有14种不同的类型见下表 type的apiclass tfDType 张量相关api 会话Session 会话模式 会

DFan的NoteBook 1万+

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

ArcGIS Pro符号化教程

本文详细介绍了ArcGIS Pro的软件设置和符号化操作步骤。主要包括:1)设置默认工程目录和关闭地图自动加载;2)创建新工程的基本流程;3)点要素的单一符号化方法,包括样式修改和图层调整;4)图表符号显示过滤器的使用,涉及字段添加、图表类型选择和背景设置。文章还提供了操作截图和数据下载链接,适合GIS初学者学习ArcGIS Pro的基础符号化操作。

WwLK123的博客 549

tensorflow-代码-卷积神经网络(CNN)

tensorflow学习之路 八:使用卷积神经网络进行手写数字识别。 前面的文章使用了传统神经网络对手写数字进行识别,为了学习卷积神经网络,继续使用手写识别这个案例,不过这里使用卷积神经网络代替传统神经网络。通过案例学习到,如何使用卷积神经网络替代传统神经网络完成手写识别方法。学习如何定义以及使用卷积神经。 结构: 这里整个模型的结构是:2层卷积层以及2层全连接...

sinat_34269128的博客 790

Unreal5从入门到精通之一文搞懂Unreal的C++代码编译之谜

我们在开发Unreal项目时,如果时蓝图模板的项目,一般问题不大,因为当你修改完蓝图,点击编译Compile+保存Save,就可以继续开发了。这对于开发者来说也非常友好。但是,如果你使用的C++模板开发项目,代码编译一切都变得魔幻起来,IDE(VS/Rider)里面有编译,编辑器里面也有编译,有什么区别呢?我们来列举几个新手常碰到的问题。1.代码我明明新建了,编辑器里怎么看不到?2.昨天我新家的功能运行的好好的,今天怎么感觉还是老逻辑。或者昨天加的新代码,新蓝图不见了。

TxNet 1606

TensorFlow实战笔记之(4):卷积神经网络(CNN) 实现手写数字识别

一、引言 前一篇博文使用单隐层的全连接神经网络,并结合一些神经网络的优化策略,如指数衰减学习率、正则化、Relu激活函数和Adam优化算法等,用包含100个隐层神经元的神经网络实现了MNIST数据集上手写数字识别98%的准确率。但是全连接神经网络也是有局限的,即使使用很深的网络、很多的隐层结点、很大的迭代轮数,也很难在MNIST数据集上得到99%以上的准确率。不过,卷积神经网络的出现解决了这一问...

polyhedronx的博客 6519

【推荐100个unity插件之34】在unity中实现和Live2D虚拟人物的交互——Cubism SDK for Unity

Live2D是一款2D建模的软件,常用于游戏,动态壁纸,虚拟主播,游戏公司里面是有专门的ive2D岗位的。游戏里面还有一个经常使用的软件——spine,他做的也是2d的模型,但是他更适合做一些动作,Live2D更适合人物交互方面。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4996

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

03.TensorFlow入门------《Tensorflow实战Google深度学习框架》笔记

一、TensorFlow计算模型------计算图    计算图是TF中最基本的一个概念,TF中的所有计算都会被转化为计算图上的节点。1、计算图的概念    TF的名字已经说明了它最重要的两个概念----Tensor和Flow。Tensor就是张量,在TF中,张量可以被简单地理解为多维数组。如果说TF的第一个词Tensor表明了它的数据结构,那么Flow则体现了它的计算模型。Flow翻译成中文就是...

爱草莓的番茄酱的博客 569

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 大数据开发的高质量面试题
下一篇: 支付系统的平台架构分析和思考
常耀斌
常耀斌 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄8年 1812粉丝 611原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值