深度学习系列:Pytorch环境搭建和感知机模型

前言

注:以后我的文章会写在个人博客网站上,本站文章也已被搬运。本文地址:
https://xiaodongfan.com/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97-%E4%B8%80-%EF%BC%9Apytorch%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E5%92%8C%E6%84%9F%E7%9F%A5%E6%9C%BA%E6%A8%A1%E5%9E%8B.html

这个系列是有关深度学习的内容,包括一些常见的神经网络模型的训练和实际应用。本人接触深度学习时间不长,同样希望通过博客的方式记录学习过程和总结学习成果。废话不多说,本篇主要介绍深度学习工具Pytorch的环境搭建以及神经网络的基础单元:感知机模型。
本人计算机配置好的环境:
计算机系统:Window10,python版本为:3.7.4
开发环境:PyCharm 2019.3.3
Pytorch版本:1.4.0
CUDA版本:9.2

Anaconda安装和新建环境

Anaconda是一个开源的python包管理工具,其本身就内涵了许多python的科学计算包,而且有了Anaconda之后,计算机里的python包的管理十分方便,不用担心安装不同的包会产生冲突。你计算机可以同时安装Tensorflow和Pytorch环境,且互不干扰。强烈建议使用这个工具!!
Anaconda的安装十分简单,直接去官网下载安装包按照步骤安装即可:https://www.anaconda.com/products/individual选择Windows版本就行了。
这里介绍Anaconda新建环境的方法。对于python而言,计算机中可能要安装很多个包来满足不同的需求,那么怎么保证不同的包之间不发生冲突呢?Anaconda提供了解决方法,就是在计算机中单独的创建不同的python环境,不同的包安装在不同的环境之中。首先打开Anaconda Prompt命令窗口,可以看到前面有个括号(base),说明当前处于的环境是base环境,这个环境是默认都有的,这个环境下预先安装了numpy的一系列的科学计算包。我们可以用以下指令来创建我们自己的一个新的环境:

conda create -n env_name python=3.7

其中env_name为你自定义的名称,3.7为想要安装的python版本。这里我使用prlearn为名称创建模式识别的环境。创建成功之后用下面指令来切换环境:

conda activate env_name

就可以切换至自己新建的环境了。删除某个环境:

conda remove -n env_name --all

下图为切换至创建好的prlearn环境,并验证python(这里我事先创建好了prlearn环境)。
在这里插入图片描述
实际上,Anaconda新建环境就是多在计算机上新建了一个文件夹,这个文件夹中有自己的python解释器,这在env文件夹中可以看到:
在这里插入图片描述

Pytorch环境搭建

Pytorch是一个开源的机器学习库,由Facebook基于Torch推出,可以很方便的实现包含自动求导的深度神经网络以及使用GPU加速网络的训练。
Pytorch的安装也十分简单,直接去官网选择相应的版本和CUDA版本:https://pytorch.org/。(如果计算机没有NVIDA显卡,可以在CUDA的选项选择None。)
在这里插入图片描述
然后下面会出现需要运行的指令,直接复制下来在Anaconda新建的环境下安装:
在这里插入图片描述
安装的速度可能会比较慢,建议科学上网,速度会比较快!这里我已经安装过就不再安装,当然自己可以选择更高版本安装。
安装完成之后验证是否Pytorch安装成功以及CUDA是否安装成功:
在这里插入图片描述
import成功且cuda可用,就说明环境搭建完成了!!如果cuda可用返回False可能不是安装失败,可能是显卡的驱动需要更新,我就是这样!

感知机模型

我们首先从生物的神经网络谈起,事实上,人工神经网络也正是模仿生物神经网络而来的。
生物神经网络由神经元经过复杂连接组成,神经元包括四个主要部分:细胞体、树突、轴突和突触,树突的作用是用于接受周围其它神经元传入的神经冲动,轴突功能是向其它神经元传出神经冲动。每个神经元细胞在树突处接受其它多个神经元的信号,这些信号在细胞体中综合处理,如果该细胞接受到的兴奋信号较多,则被激活,从而向下一个神经元传递出一个脉冲信号。
因此,我们可以根据单个神经元建立感知机模型。
在这里插入图片描述
即我们可以将神经元的工作过程看作是将传入的 x 1 x 2 . . . x n x_1 x_2 ... x_n x1x2...xn等信号进行加权求和之后和阈值 θ \theta θ比较,如果大于阈值则根据一定的规则 f f f进行输出,这个规则 f f f也就是激活函数,信号加权求和减去阈值成为净激励。激活函数有多种类型,若其以阶跃函数二值化输出:
在这里插入图片描述
那么这个模型就是著名的感知机模型,也就是一个非常简单的二分类分类器。将一个样本的各个特征取值 x 1 x 2 . . . x n x_1 x_2 ... x_n x1x2...xn进行加权求和和偏置项 θ \theta θ相减,很明显这是一个线性分类器,我们可以通过调整各个特征的权系数来调整我们的分类器,事实上感知机就是通过训练来不断调整权系数和阈值,使得模型具有较好的分类效果。接下来我们介绍以下如何训练一个简单的感知机模型。
给定训练集数据,权重 ω i \omega_i ωi和阈值 θ \theta θ通过学习得到,阈值 θ \theta θ可以看作是一个固定输入 − 1 -1 1对应的权重 ω i + 1 \omega_{i+1} ωi+1,也就是说可以统一为权重的学习。
机器学习中常用的一种学习方法就是梯度下降的方法。什么是梯度下降呢?首先我们要设置一个损失函数 L L L,也就是我们的优化目标,我们总是希望这个损失函数取到最小值,即达到最好的优化结果。当然优化的过程就是调整待优化的参数 ω \omega ω,梯度下降就是根据损失函数 L L L ω \omega ω的梯度方向来调整 ω \omega ω,也就是说往损失函数下降最快的方向来修正我们的优化参数。
以感知机模型为例,最简单的我们设置损失函数为: L = ( y − y ^ ) L=(y-\hat y) L=(yy^),即期望的输出值和当前的输出值之差,感知机权重按照下面式子调整:
ω i ← ω i + Δ ω i \omega_i \gets \omega_i + \Delta \omega_i ωiωi+Δωi
其中:
Δ ω i = η ( y − y ^ ) x i \Delta \omega_i = \eta (y-\hat y)x_i Δωi=η(yy^)xi
式中 η \eta η为学习率,即调整步长; x i x_i xi为损失函数 L L L ω i \omega_i ωi的梯度。这样我们根据感知机的目标输出和当前输出的差值来一步步的调整权重,最终能够收敛到比较好的结果。
需要注意的是:感知机是一个线性分类器,它解决不了非线性分类的问题,例如它无法解决异或问题。要想办法解决非线性可分问题,必须考虑多层的神经元,即神经网络
在这里插入图片描述
关于神经网络的结构和工作原理,下篇介绍。

总结

本篇主要介绍了Anaconda环境的搭建、Pytorch的安装以及神经网络的基础:感知机模型。下篇将介绍全连接神经网络,以及训练方法:反向传播算法。
本篇博客参考资料有:
中国大学MOOC《人工智能之模式识别》北京理工大学的课件
周志华《机器学习》

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PyCharm是一款功能强大的Python集成开发环(IDE),它提供了丰富的功能和工具来帮助开发者编写、调试和管理Python代码。感知机是种二分类的线性分类算法,可以用于解决简单的分类问题。在PyCharm中实现感知机可以按照以下步骤进行: 1. 创建一个新的Python项目:在PyCharm中,你可以选择创建一个新的Python项目。这将为你提供一个干净的项目结构,以便开始编写代码。 2. 导入必要的库:感知机算法通常需要使用NumPy等库来进行数值计算和矩阵操作。你可以使用PyCharm的包管理工具(如pip)来安装这些库,并在代码中导入它们。 3. 定义感知机类:在Python中,你可以定义一个感知机类来封装感知机算法的实现。这个类可以包含初始化权重、训练模型、预测等方法。 4. 实现训练方法:在感知机类中,你可以实现训练方法来更新权重并逐步优化模型。训练方法通常会迭代遍历训练数据集,根据预测结果和真实标签来更新权重。 5. 实现预测方法:感知机的预测方法可以根据输入特征和学习到的权重来预测样本的类别。你可以在感知机类中实现一个预测方法,用于对新样本进行分类。 6. 编写主程序:在主程序中,你可以创建一个感知机对象,加载训练数据集,调用训练方法进行模型训练,然后使用预测方法对测试数据集进行分类,并输出结果。 7. 调试和优化:使用PyCharm的调试功能可以帮助你检查代码中的错误和问题,并进行必要的优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值