六、神经网络

keras神经网络搭建六步法 使用keras快速搭建神经网络,只需“六步”20行代码 阅读详情

六、神经网络

内容参考来自https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book开源书籍《TensorFlow2深度学习》,这只是我做的简单的学习笔记,方便以后复习

1.感知机全连接层

张量方式实现

# 创建 W,b 张量
x = tf.random.normal([2,784])
w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1))
b1 = tf.Variable(tf.zeros([256]))
o1 = tf.matmul(x,w1) + b1 # 线性变换
o1 = tf.nn.relu(o1) # 激活函数

层方式实现

x = tf.random.normal([4,28*28])
from tensorflow.keras import layers # 导入层模块
# 创建全连接层,指定输出节点数和激活函数
fc = layers.Dense(512, activation=tf.nn.relu)
h1 = fc(x) # 通过 fc 类实例完成一次全连接层的计算,返回输出张量

可以通过类的tf.trainable_variables 来返回待优化参数列表。

可以通过tf.non_trainable_variables 成员返回所有不需要优化的参数列表。

如果希望获得所有参数列表,可以通过类的 tf.variables 返回所有内部张量列表。

2.神经网络

张量方式实现

# 隐藏层 1 张量
w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1))
b1 = tf.Variable(tf.zeros([256]))
# 隐藏层 2 张量
w2 = tf.Variable(tf.random.truncated_normal([256, 128], stddev=0.1))
b2 = tf.Variable(tf.zeros([128]))
# 隐藏层 3 张量
w3 = tf.Variable(tf.random.truncated_normal([128, 64], stddev=0.1))
b3 = tf.Variable(tf.zeros([64]))
# 输出层张量
w4 = tf.Variable(tf.random.truncated_normal([64, 10], stddev=0.1))
b4 = tf.Variable(tf.zeros([10]))
with tf.GradientTape() as tape: # 梯度记录器
    # x: [b, 28*28]
    # 隐藏层 1 前向计算,[b, 28*28] => [b, 256]
    h1 = x@w1 + tf.broadcast_to(b1, [x.shape[0], 256])
    h1 = tf.nn.relu(h1)
    # 隐藏层 2 前向计算,[b, 256] => [b, 128]
    h2 = h1@w2 + b2
    h2 = tf.nn.relu(h2)
    # 隐藏层 3 前向计算,[b, 128] => [b, 64]
    h3 = h2@w3 + b3
    h3 = tf.nn.relu(h3)
    # 输出层前向计算,[b, 64] => [b, 10]
    h4 = h3@w4 + b4

层方式实现

# 导入 Sequential 容器
from tensorflow.keras import layers,Sequential
# 通过 Sequential 容器封装为一个网络类
model = Sequential([
    layers.Dense(256, activation=tf.nn.relu) , # 创建隐藏层 1
    layers.Dense(128, activation=tf.nn.relu) , # 创建隐藏层 2
    layers.Dense(64, activation=tf.nn.relu) , # 创建隐藏层 3
    layers.Dense(10, activation=None) , # 创建输出层
])
# 前向计算时只需要调用一次网络大类对象,即可完成所有层的按序计算:
out = model(x) # 前向计算得到输出

3.激活函数

3.1Sigmoid

Sigmoid 函数也叫 Logistic 函数,定义为

Sigmoid(x)=11+e−x Sigmoid(x)= \frac{1}{1+e^{-x}} Sigmoid(x)=1+e−x1​

它的一个优良特性就是能够把𝑦 ∈ 𝑆的输入“压缩”到𝑦 ∈ (0,1)区间,这个区间的数值在机器学习常用来表示以下意义

  • 概率分布 (0,1)区间的输出和概率的分布范围[0,1]契合,可以通过 Sigmoid 函数将输出转译为概率输出。
  • 信号强度 一般可以将 0~1 理解为某种信号的强度,如像素的颜色强度,1 代表当前通道颜色最强,0 代表当前通道无颜色;抑或代表门控值(Gate)的强度,1 代表当前门控全部开放,0 代表门控关闭。

在这里插入图片描述

x = tf.linspace(-6.,6.,10)
tf.nn.sigmoid(x) # 通过 Sigmoid 函数

3.2ReLU

ReLU(𝑦) ≜ max(0,𝑦)可以看到,ReLU 对小于 0 的值全部抑制为 0;对于正数则直接输出,这种单边抑制特性来源于生物学。

在这里插入图片描述

tf.nn.relu(x) # 通过 ReLU 激活函数

3.3LeakyReLU

ReLU 函数在𝑦 < 0时导数值恒为 0,也可能会造成梯度弥散现象,为了克服这个问题,LeakyReLU 函数被提出,如图

6.10 所示,LeakyReLU 的表达式为:

LeakyReLU={x,x>=0px,x<0 LeakyReLU= \begin{cases} x, & \text {x>=0} \\ px, & \text{x<0} \end{cases} LeakyReLU={x,px,​x>=0x<0​

在这里插入图片描述

tf.nn.leaky_relu(x, alpha=0.1) # 通过 LeakyReLU 激活函数

3.4Tanh

Tanh 函数能够将𝑦 ∈ 𝑆的输入“压缩”到(−1,1)区间,定义为

tanh(x)=ex−e−xex+e−x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+e−xex−e−x​

在这里插入图片描述

tf.nn.tanh(x) # 通过 tanh 激活函数

4.输出层设计

4.1普通实数空间

这一类问题比较普遍,像正弦函数曲线预测、年龄的预测、股票走势的预测等都属于整个或者部分连续的实数空间,输出层可以不加激活函数。

4.2[0, 1] 区间

输出值属于[0,1]区间也比较常见,比如图片的生成、二分类问题等。在机器学习中,一般会将图片的像素值归一化到[0,1]区间,如果直接使用输出层的值,像素的值范围会分布在整个实数空间。为了让像素的值范围映射到[0,1]的有效实数空间,需要在输出层后添加某个合适的激活函数𝜎,其中 Sigmoid 函数刚好具有此功能。

4.3[0,1] 区间,和为 1

输出值𝑝 𝑗 ∈ [0,1],且所有输出值之和为 1,这种设定以多分类问题最为常见。可以通过在输出层添加 Softmax 函数实现。

在 Softmax 函数的数值计算过程中,容易因输入值偏大发生数值溢出现象;在计算交叉熵时,也会出现数值溢出的问题。为了数值计算的稳定性,TensorFlow 中提供了一个统一的接口,将 Softmax 与交叉熵损失函数同时实现,同时也处理了数值不稳定的异常,一般推荐使用这些接口函数,避免分开使用 Softmax 函数与交叉熵损失函数。函数式接口为
tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=False),其中 y_true 代表了One-hot 编码后的真实标签,y_pred 表示网络的预测值,当 from_logits 设置为 True 时,y_pred 表示须为未经过 Softmax 函数的变量 z;当 from_logits 设置为 False 时,y_pred 表示为经过 Softmax 函数的输出。为了数值计算稳定性,一般设置 from_logits 为 True,此时tf.keras.losses.categorical_crossentropy 将在内部进行 Softmax 函数计算,所以不需要在模型中显式调用 Softmax 函数。

z = tf.random.normal([2,10]) # 构造输出层的输出
y_onehot = tf.constant([1,3]) # 构造真实值
y_onehot = tf.one_hot(y_onehot, depth=10) # one-hot 编码
# 输出层未使用 Softmax 函数,故 from_logits 设置为 True
# 这样 categorical_crossentropy 函数在计算损失函数前,会先内部调用 Softmax 函数
loss = keras.losses.categorical_crossentropy(y_onehot,z,from_logits=True)
loss = tf.reduce_mean(loss) # 计算平均交叉熵损失

4.4[-1, 1]

如果希望输出值的范围分布在(−1,1)区间,可以简单地使用 tanh 激活函数。

x = tf.linspace(-6.,6.,10)
tf.tanh(x) # tanh 激活函数

5.误差计算

常见的误差函数有均方差、交叉熵、KL 散度、Hinge Loss 函数等,其中均方差函数和交叉熵函数在深度学习中比较常见,均方差函数主要用于回归问题,交叉熵函数主要用于分类问题。

均方差误差函数

o = tf.random.normal([2,10]) # 构造网络输出
y_onehot = tf.constant([1,3]) # 构造真实值
y_onehot = tf.one_hot(y_onehot, depth=10)
loss = keras.losses.MSE(y_onehot, o) # 计算均方差

交叉熵误差函数

# 输出层未使用Softmax函数,故from_logits设置为True
loss = keras.losses.categorical_crossentropy(y_onehot,z,from_logits=True)

6.神经网络类型

6.1 卷积神经网络

其中比较流行的模型有用于图片分类的 AlexNet、VGG、GoogLeNet、ResNet、DenseNet 等,用于目标识别的 RCNN、Fast RCNN、Faster RCNN、Mask RCNN、YOLO、SSD 等。

6.2 循环神经网络

其中比较流行的模型有LSTM 模型、GRU、双向 RNN 等。

6.3 注意力( 机制)网络

RNN 并不是自然语言处理的最终解决方案,近年来随着注意力机制(AttentionMechanism)的提出,克服了 RNN 训练不稳定、难以并行化等缺陷,在自然语言处理和图片生成等领域中逐渐崭露头角。注意力机制最初在图片分类任务上提出,但逐渐开始侵蚀NLP 各大任务。2017 年,Google 提出了第一个利用纯注意力机制实现的网络模型Transformer,随后基于 Transformer 模型相继提出了一系列的用于机器翻译的注意力网络模型,如 GPT、BERT、GPT-2 等。在其它领域,基于注意力机制,尤其是自注意力(Self-Attention)机制构建的网络也取得了不错的效果,比如基于自注意力机制的 BigGAN 模型等。

6.4 图卷积神经网络

图片、文本等数据具有规则的空间、时间结构,称为 Euclidean Data(欧几里德数据)。卷积神经网络和循环神经网络被证明非常擅长处理这种类型的数据。而像类似于社交网络、通信网络、蛋白质分子结构等一系列的不规则空间拓扑结构的数据,它们显得力不从心。2016 年,Thomas Kipf 等人基于前人在一阶近似的谱卷积算法上提出了图卷积网络(Graph Convolution Network,GCN)模型。GCN 算法实现简单,从空间一阶邻居信息聚合的角度也能直观地理解,在半监督任务上取得了不错效果。随后,一系列的网络模型相继被提出,如 GAT,EdgeConv,DeepGCN 等。

7. 题外话

最近整理笔记发现为啥有抄书的感觉,很奇怪,千万不要本末倒置啊。。。。

23、资产分散化与有效前沿:投资组合优化的核心策略 本文深入探讨了现代投资组合理论的核心概念,包括分散投资的重要性、均值-方差优化框架以及有效前沿的构建与应用。通过案例分析和数学模型,阐述了如何通过科学方法降低投资组合风险并实现最优风险收益权衡。文章还介绍了实际应用中的求解方法与决策流程,为投资者提供系统的投资组合优化指导。 阅读详情

相关推荐

ch32v103xx 烧写

烧写方式 串口uart, usb,swd(wch link)但不建议按此使用,参官方说明。

qq_39239990的博客 637

使用TensorFlow 搭建神经网络的六步法

使用TensorFlow API:tf.keras 搭建神经网络 搭建神经网络六步法: 1.导入第三方库:import 2.导入并理解数据,划分训练集与测试集:train test 3.在Sequential()中搭建网络结构。逐层描述每层网络,相当于前向传播。:model=tf.keras.models.Sequential 4.在compile中配置训练方法。即选择哪种优化器,选择哪个损失函数,选择哪种评测指标。model.compile 5.在fit中进行训练。告知训练集和测试集的输入特征和标签。每个

waner_jiaki的博客 2563

使用 Claude Skills 构建专业级 AI Agent:技术实践指南

Claude Skills(也称)是一组基于文件系统的可重用资源包,为 Claude 提供特定领域的专业知识、标准化工作流程和最佳实践。与传统一次性 Prompt 不同,Skills 是持久化、自动触发、支持代码执行的智能模块。让 AI 真正理解并执行你的工作方式。Claude Skills 正在重新定义 AI 助手的边界——从“回答问题”升级为“执行专业工作的能力”。其可组合、可移植、高效、强大的特性,使其成为自动化重复任务、标准化工作流、提升团队效率的理想工具。未来已来。

weixin_44058951的博客 2226

神经网络的计算步骤

这是对单个训练样本(一张图)的损失函数,但我们输入都神经网络的通常是一个训练集(大量的图片)。计算机保存一张图片,要保存三个独立矩阵,分别对应红、绿、蓝三个颜色通道。比如图像数据,世界上的所有颜色都可以通过,红绿蓝三种颜色调配出来。就好像用显微镜一样,粗体可以看到大致图像,精调可以看清楚图像。因为学习,就是找到一组 w 和 b,使这个损失函数最小。这个损失函数(逻辑回归)的函数图像是一个向下凸的图形。用损失函数分析预测正确率,看当前的预测结果是否正确。的矩阵,分别对应红绿蓝三个像素的亮度。......

Debroon 6714

NotebookLM平替实测:用Open Notebook+Ollama零成本搭建私有AI知识库

本文提供了一份详细的实战指南,教你如何利用Open Notebook与Ollama,在本地零成本搭建一个功能强大且完全私有的AI知识库。通过Docker容器化部署,实现数据绝对安全、模型自由选择与离线运行,是NotebookLM等云端工具的绝佳平替方案,尤其适合注重数据隐私的教育工作者、研究者及小团队。

weixin_29052717的博客 513

【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程

这章来学习串口数据流操作。仿照成品制作一个自己用Qt编写的串口助手。 1. 布局UI界面 创建QWidget工程,布局UI界面:拖入2个 Plain Text Edit,作为串口数据的接收显示和发送框。 拖入几个 Combo Box 、Label 和 Push Button,使用两个Widget进行布局。如下所示。 将接收区的 Plain Text Edit,属性勾选上 readOnly,使其运行时不会被人为的输入操作影响。 加入一些弹簧,使布局美观。(有必要可以加设置不能调整..

Mark_md的博客 9272

卷积神经网络参数量和计算量内存计算

神经网络常用模型参数量一级目录二级目录 一级目录 二级目录

bblingbbling的博客 4861

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进YOLOv11模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带来的结构可以让大家自行调节网络结构大小,同时能够达到一定的轻量化效果,为什么发BiFPN呢因为它算是YOLO系列改进中的常青树了,大家可以借鉴它的双向特征思想来创新自己的Neck结构本文的BiFPN通过yaml文件配置可以让大家自行调配其结构。

Snu77的博客 9094

图解3种常见的深度学习网络结构:FC、CNN、RNN

导读:深度学习可以应用在各大领域中,根据应用情况的不同,深度神经网络的形态也各不相同。常见的深度学习模型主要有全连接(Fully Connected,FC)网络结构、卷积神经网络(Con...

大数据 2万+

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1728

山东大学机试试题合集

山东大学机试试题合集

qq_63349644的博客 2621

神经网络训练技巧深度剖析,值得一读!

这样,当我们有过大量训练模型的经验之后,大家就可以总结出自己的一组数据(称为epoch factors),使用这些参数,我们训练新的模型时,可以快速设置初始训练epochs,并且按照一定的比例来增加epochs。这个Transformer模型有几亿个参数,但是我们可能无法在我们的GPU上进行训练它,这大量的参数就是知识蒸馏过程变得有效的地方,我们通过训练第二个模型来产生更大模型的输出,而作为输出仍是原始数据集,但是标签确实参考模型的输出,也被称为软输出。这种技术的目标是在小模型的帮助下,复制更大的模型。

m0_68804322的博客 289

57、振荡扫描仪的挠性枢轴:原理、设计与材料选择

本文深入探讨了振荡扫描仪中挠性枢轴的工作原理、设计方法与材料选择。挠性枢轴因其无润滑、高精度、低周期性误差和潜在无限寿命等优势,广泛应用于光学、太空、医学和半导体等领域。文章分析了其在小角度下的优异性能与无法连续旋转等局限性,提供了关键设计公式,并对比了多种挠性材料的性能指标。同时,结合不同应用场景提出设计优化策略,并展望了微型化、智能化和高性能材料等未来发展趋势,为工程实践提供了系统的设计流程与选型建议。

numpy6sculptor的博客 95

TensorFlow:全连接层的实现

文章目录一、张量方式实现二、层方式实现 一、张量方式实现 在 TensorFlow 中,要实现全连接层,只需要定义好权值张量W 和偏置张量b,并利用 TensorFlow 提供的批量矩阵相乘函数tf.matmul()即可完成网络层的计算。 如下代码创建输入X 矩阵为???? = 2个样本,每个样本的输入特征长度为???????????? = 784,输出节点数为???????????????? =256,故定义权值矩阵W 的shape 为[78...

南淮北安的博客 8550

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【神经网络】基于RBF神经网络的六关节机械臂无模型控制

前言:最近在搞神经网络,看到有用神经网络逼近未建模动态的,也有用神经网络来逼近整个模型的,后者即是无模型控制。无模型控制它不需要知道系统的名义模型,直接用神经网络来逼近整个系统,感觉这个方法还蛮厉害的。鉴于此,我将此方法用在了六关节机械臂的模型上,最后的控制效果还不错。 1. 机械臂动力学方程 Mq¨+Nq˙+G+f+d=τ M\ddot{q}+N\dot{q}+G+f+d=\tau Mq¨​+Nq˙​+G+f+d=τ 这里的 fff 为摩擦力,ddd 为外部干扰,τ\tauτ 为关节力矩,动力学建模方法

好梦就会趁你睡醒实现 6106

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

tensorflow.keras六步法搭建神经网络

利用tensorflow六步法搭建简单神经网络,实现iris,mnist数据集分类

lixinyu990724的博客 383

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Tensorflow学习笔记2-Keras六步法搭建神经网络模型

六步法实现模型搭建 导入相关模块 导入训练集与测试集 搭建网络结构 配置训练方法 执行训练方法 打印出网络结构,参数统计 基本元素介绍 一、激活函数 激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。引入非线性激活函数,可使深 层神经网络的表达能力更加强大。激活函数非线性时,多层神经网络可逼近所有函数 常见的激活函数有 sigmoid、relu、softmax 小提示:平时在使用时,最后输出用softmax,其余基本都用relu 二、损失函数 神经网络模型的效果及优化的目标是通过损失函数来定义

qq_44711932的博客 912

六步法搭建神经网络

tf.keras搭建网络八股 六步法: import 导入模块 train,test 训练集和测试集是什么(训练集输入特征x_train和训练集的标签y_train) (测试集输入特征x_test和测试集的标签y_test) model = tf.keras.models.Sequential 在Sequntial()中搭建网络结构,逐层描述每层网络,走一遍前向传播 model.c...

HouYing 546

tensorflow2.1 神经网络六步法--顺序型神经网络结构

神经网络六步法 1、import import tensorflow as tf import numpy as np from sklearn import datasets 2、_train ,_test x_train = datasets.load_iris().data y_train = datasets.load_iris().target #ps:还需要对数据乱序 3、models.Sequential() 注意:Sequential()搭建的是顺序型神经网络结构 # 描述各层网络结构

qq_27327279的博客 877

DAY12 Tensorflow 六步法搭建神经网络

首先,从相应的数据集中加载数据,如这里使用 mnist.load_data() 加载 MNIST 手写数字数据集,得到训练集的特征 x_train 和标签 y_train,以及测试集的特征 x_test 和标签 y_test。fit中执行训练过程,分别是 输入特征,训练集标签,训练时一次喂给神经网络多少组数据batch_size,循环迭代次数,validation_split=0.2告知从训练集中选择百分之20数据当做测试集,validation_freq=20,表示迭代20次,在测试集中验证一次准确率。

m0_71603576的博客 1820

3搭建神经网络的套路(之一):用Tensorflow API--tf.keras搭建网络(六步法)

搭建神经网络的套路 3.1六步法搭建神经网络 3.1.1 tf.keras搭建网络(六步法)来快速搭建神经网络于Sequential 可以搭建出上层输出就是下层输入的的顺序网络结构,但无法写出一些带有跳连的非顺序网络结构 提纲 举例 import import相关模块 import tensorflow as tf train, test 告知要喂入网络的训练集和测试集是什么 指定训练集的输入特征x_train和训练集的标签y_train;测试集的输入特征x_t

TypicalSpider的博客 3987

tensorflow.keras搭建神经网络六步法

tensorflow.keras搭建神经网络六步法 第一步,import相关模块,如: import tensorflow as tf 第二步,指定输入网络的训练集和标签集,例如训练用的输入x_train和标签y_train,以及测试用的输入x_test和标签y_test 第三步,逐层搭建神经网络,如:model=tf.kreas.models.Sequential() 第四步,在model.compile()中配置训练方法,选择训练时用的优化器、损失函数和最终评价指标 第五步,在model.f

yunfeather的博客 1721

六.使用八股搭建神经网络

六步法搭建神经网络

weixin_45361800的博客 591

tensorflow 2.1 六步法搭建Keras神经网络模型

一、六步法搭建Keras神经网络模型·第一步:导入库函数 ·第二步:划分数据集 ·第三步:搭建神经网络模型的tf.keras.models.Sequential,模型搭建 ·第四步:compile选择损失函数,优化器,准确率表达形式...... ·第五步:fit选择输入特征,标签,迭代次数,batch大小,数据集划分比例、没带哦稍次epoch验证一次数据集 ·第六步:打印出模型summery并且验证模型 二、神经网络层 sequential是神经网络层的容器: Flatten层不包含计算,只是将数据拉

qq_46006468的博客 1059

【北京大学】Tensorflow2.0神经网络搭建八股、用六步法写出手写数字识别训练模型

目录1 本讲摘要3 六步法搭建网络4 搭建网络八股class5 MINIST数据集6 FASHION数据集 1 本讲摘要 (1)本讲目标:使用八股搭建神经网络 (2)摘要 • 神经网络搭建八股 • Iris代码复现 • MNIST数据集 • 训练 MNIST 数据集 • Fashion数据集 3 六步法搭建网络 用Tensorflow的API:tf.keras搭建网络八股 (1)六步法 imort train,test # 搭建网络结构 ```python model = tf.keras.models

BetterBench的博客 1173

六步法利用tensorflow搭建神经网络八股

六步法利用tensorflow搭建神经网络八股1.准备工作Ⅰ.已安装python3环境的电脑Ⅱ.python开发ide(如pycharm、jupyter notebook等)Ⅲ.在python环境中安装tensorflow2.x库1.正式开发Ⅰ.importⅡ.train testⅢ.model = tf.keras.models.Sequential()Ⅳ.model.compile()Ⅴ.model.fit()Ⅵ.model.summary()3.完整代码 1.准备工作 Ⅰ.已安装python3环境的电

qq_44973776的博客 784
上一篇: 五、TensorFlow 进阶
下一篇: 七、反向传播算法
coder_jyz
博客等级 码龄10年 13粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder_jyz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值