Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用pytorch实现鸢尾花的分类——BP神经网络

使用pytorch实现鸢尾花的分类——BP神经网络

作者头像
用户6719124
发布于 2019-11-17 15:37:44
发布于 2019-11-17 15:37:44
12.6K06
代码可运行
举报
运行总次数:6
代码可运行

前文我们使用机器学习法实现了鸢尾花的分类,

本文介绍使用Pytorch中的交叉熵算法来实现分类问题。

构建出的模型类型大致为

上图构建的输入层+2个隐藏层+输出层,共计4层结构的神经网络。

因此是4->layer1->layer2->3的三分类问题。考虑可以使用多种算法进行分析,本文先介绍使用BP神经网络进行分析。

先读取数据,并将数据分类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn import datasets
dataset = datasets.load_iris()
data = dataset['data']
iris_type = dataset['target']
print(data)
print(iris_type)

这里将data(输出5行)和iris_type输出一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

为计算需求 这里要将数据转换为Tensor模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input = torch.FloatTensor(dataset['data'])
print(input)
label = torch.LongTensor(dataset['target'])
print(label)

分别输出为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tensor([[5.1000, 3.5000, 1.4000, 0.2000],
        [4.9000, 3.0000, 1.4000, 0.2000],
        [4.7000, 3.2000, 1.3000, 0.2000],
        [4.6000, 3.1000, 1.5000, 0.2000],
        [5.0000, 3.6000, 1.4000, 0.2000]])
tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,        0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,        1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,        2, 2, 2, 2, 2, 2])

引入pytorch工具包 构建BP网络

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import torch.nn.functional as Fun
# 定义BP神经网络
class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)
        self.out = torch.nn.Linear(n_hidden, n_output)
        
    def forward(self,x):
        x = Fun.relu(self.hidden(x))
        x = self.out(x)
        return x

选定网络、优化器和损失函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
net = Net(n_feature=4, n_hidden=20, n_output=3)
optimizer = torch.optim.SGD(net.parameters(), lr=0.05)
# SGD:随机梯度下降法
loss_func = torch.nn.CrossEntropyLoss
# 设定损失函数

开始训练数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(1000):
    out = net(input)
    loss = loss_func(out, label)
    # 输出与label对比
    optimizer.zero_grad()
    # 初始化
    loss.backward()
    optimizer.step()

开始输出数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
out = net(input)
# out是一个计算矩阵
prediction = torch.max(out, 1)[1]
pred_y = prediction.numpy()
# 预测y输出数列
target_y = label.data.numpy()
# 实际y输出数据

输出正确率

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
正确率为: 0.98

该正确率明显高于前面的机器学习预测的正确率。

后续还将介绍使用其他方法进行预测。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
pytorch搭建简单神经网络
一个基本的神经网络结构如图1和图2所示。图1是只有一个神经元的示意图,图2是一个含有隐藏层的简单神经网络。
生信编程日常
2020/11/24
6040
pytorch搭建简单神经网络
【专知国庆特刊-PyTorch手把手深度学习教程系列01】一文带你入门优雅的PyTorch
【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视觉等)、大数据、编程语言、系统架构。使用请访问专知 进行主题搜索查看 - 桌面电脑访问www.zhuanzhi.ai, 手机端访问www.zhuanzhi.ai 或关注微信公众号后台回复" 专知"进入专知,搜索主题查看。值国庆佳节,专知特别推出独家特刊-来自中科院自动化所专知小组博士生huaiwen和Jin创作的-PyTorch教程学习系列。 <
WZEARW
2018/04/08
2.2K0
【专知国庆特刊-PyTorch手把手深度学习教程系列01】一文带你入门优雅的PyTorch
浅浅的记录一下基于pytorch的房价预测
很肝的东西,目前还在学习当中,就浅浅的先记录一下,等日后学完了再回来看看,或者逐行的加上注释
Tom2Code
2022/06/08
9250
浅浅的记录一下基于pytorch的房价预测
【干货】深度学习实验流程及PyTorch提供的解决方案
【导读】近日,专知小组博士生huaiwen创作了一系列PyTorch实战教程,致力于介绍如何用PyTorch实践你的科研想法。今天推出其创作的第一篇《深度学习实验流程及PyTorch提供的解决方案》。在研究深度学习的过程中,当你脑中突然迸发出一个灵感,你是否发现没有趁手的工具可以快速实现你的想法?看完本文之后,你可能会多出一个选择。本文简要的分析了研究深度学习问题时常见的工作流, 并介绍了怎么使用PyTorch来快速构建你的实验。如果本文能为您的科研道路提供一丝便捷,我们将不胜荣幸。 专知公众号以前推出Py
WZEARW
2018/04/13
1.7K0
【干货】深度学习实验流程及PyTorch提供的解决方案
【深度学习实验】前馈神经网络(final):自定义鸢尾花分类前馈神经网络模型并进行训练及评价
鸢尾花分类(通过输入鸢尾花的特征信息,预测鸢尾花的种类)是一个常见的机器学习问题。本次实验旨在使用PyTorch构建一个简单的鸢尾花分类前馈神经网络模型,并进行训练和评价,以了解PyTorch的基本使用方法和模型训练过程。
Qomolangma
2024/07/30
3880
【深度学习实验】前馈神经网络(final):自定义鸢尾花分类前馈神经网络模型并进行训练及评价
【专知-PyTorch手把手深度学习教程05】Dropout快速理解与PyTorch实现: 图文+代码
【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视觉等)、大数据、编程语言、系统架构。使用请访问专知 进行主题搜索查看 - 桌面电脑访问www.zhuanzhi.ai, 手机端访问www.zhuanzhi.ai 或关注微信公众号后台回复" 专知"进入专知,搜索主题查看。值国庆佳节,专知特别推出独家特刊-来自中科院自动化所专知小组博士生huaiwen和Kun创作的-PyTorch教程学习系列, 今日
WZEARW
2018/04/09
3.4K0
【专知-PyTorch手把手深度学习教程05】Dropout快速理解与PyTorch实现: 图文+代码
PyTorch技术点整理
这里我们可以看到PyTorch更简洁,不需要那么多的接口API,更接近于Python编程本身。
算法之名
2022/03/24
7870
PyTorch技术点整理
pytorch和tensorflow的爱恨情仇之定义可训练的参数
之前我们就已经了解了pytorch和tensorflow中的变量,本节我们深入了解可训练的参数-变量
西西嘛呦
2020/10/10
9010
pytorch和tensorflow的爱恨情仇之定义可训练的参数
【PyTorch入门】 PyTorch不同优化器的比较
在 PyTorch 中,torch.optim 提供了多种优化器用于神经网络训练。每种优化器背后有不同的更新规则和机制,旨在适应不同的训练需求。以下是五种常见优化器(SGD、Momentum、AdaGrad、RMSprop、Adam)的原理、作用、优缺点及应用场景。
机器学习司猫白
2025/01/21
5560
【PyTorch入门】 PyTorch不同优化器的比较
基于卷积神经网络的垃圾分类
自今年7月1日起,上海市将正式实施 《上海市生活垃圾管理条例》。垃圾分类,看似是微不足道的“小事”,实则关系到13亿多人生活环境的改善,理应大力提倡。
云微
2023/02/11
1K0
基于卷积神经网络的垃圾分类
从零开始学Pytorch(二)之线性回归
简单的说,线性回归预测是基于某个变量 X (自变量)来预测变量 Y (因变量)的值,当然前提是 X 和 Y 之间存在线性关系。这两个变量之间的线性关系可以用直线表示(称为回归线)。
墨明棋妙27
2022/08/24
6640
从零开始学Pytorch(二)之线性回归
教程 | 概率编程:使用贝叶斯神经网络预测金融市场价格
选自Medium 作者:Alex Honchar 机器之心编译 参与:陈韵竹、李泽南 随着人工智能技术的普及,用机器学习预测市场价格波动的方法最近层出不穷。本文中,Alex Honchar 介绍了利用概率编程和 Pyro 进行价格预测的方法,相较于常规神经网络,新方法对于数据的依赖程度更小,结果更准确。在实验中,作者选择了最近流行的虚拟货币「以太币」作为实例进行价格预测。 去年我曾发表过几篇有关使用神经网络进行金融价格预测的教程,我认为其中有一部分结果至少还挺有意思,并且值得在实际交易中加以应用。如果你阅读
机器之心
2018/05/10
2.2K0
[Pytorch][转载]用pytorch实现两层神经网络
这次我们使用PyTorch tensors来创建前向神经网络,计算损失,以及反向传播。
云未归来
2025/07/18
1140
Pytorch_第四篇_使用pytorch快速搭建神经网络实现二分类任务(包含示例)
上一篇学习笔记介绍了不使用pytorch包装好的神经网络框架实现logistic回归模型,并且根据autograd实现了神经网络参数更新。
用户1483438
2022/03/30
2K0
常见优化器的PyTorch实现
其中,SGD和SGDM,还有Adam是pytorch自带的优化器,而RAdam是最近提出的一个说是Adam更强的优化器,但是一般情况下真正的大佬还在用SGDM来做优化器。
机器学习炼丹术
2020/07/14
1.3K0
常见优化器的PyTorch实现
使用循环神经网络做手写数字识别
做图像识别的使用卷积神经网络CNN是最好的选择,但是其实我们也可以使用循环神经网络RNN做,只是大部分时候没有卷积网络效果好!下面分析一下如何使用RNN做手写数字的识别。
卡尔曼和玻尔兹曼谁曼
2019/03/03
1.3K0
使用循环神经网络做手写数字识别
如何使用神经网络模型解决分类、聚类、回归和标注任务:基于 PyTorch 的实现与分析
文章链接:https://cloud.tencent.com/developer/article/2469162
小馒头学Python
2024/11/22
9370
如何使用神经网络模型解决分类、聚类、回归和标注任务:基于 PyTorch 的实现与分析
基于神经网络——鸢尾花识别(Iris)
鸢尾花识别是学习AI入门的案例,这里和大家分享下使用Tensorflow 2框架,编写程序,获取鸢尾花数据,搭建神经网络,最后训练和识别鸢尾花。
一颗小树x
2021/05/18
7.4K0
基于神经网络——鸢尾花识别(Iris)
【深度学习实验】循环神经网络(二):使用循环神经网络(RNN)模型进行序列数据的预测
本实验实现了一个简单的循环神经网络(RNN)模型,并使用该模型进行序列数据的预测,本文将详细介绍代码各个部分的实现,包括模型的定义、训练过程以及预测结果的可视化。
Qomolangma
2024/07/30
5630
【深度学习实验】循环神经网络(二):使用循环神经网络(RNN)模型进行序列数据的预测
NNLM的PyTorch实现
本文主要首先介绍一篇年代久远但意义重大的论文A Neural Probabilistic Language Model(2003),然后给出PyTorch实现
mathor
2020/06/11
1.4K0
推荐阅读
相关推荐
pytorch搭建简单神经网络
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验