python深度学习·神经网络·快速入门

本文围绕《Python深度学习》一书,介绍了深度学习的基本概念,包括人工神经网络、卷积神经网络、循环神经网络和生成对抗网络。讲解了数学基础需求,详细说明了如何导入numpy和pandas等基础包,并通过一个小型神经网络实例演示了如何用DNN拟合y=x²的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

本篇文章基于《Python深度学习》[英]尼格尔·路易斯 这本书上的知识,并结合笔者的思考而著

文章中会提到深度学习的基础知识,常见的基础深度学习算法,深度学习numpy等常用包的导入,以及一个小型的练习案例

一、基础知识

1.深度学习是什么

基于初高中所学的生物神经元模型,人工构建人工神经元后,用于处理复杂或大量信息的方法

上图为生物神经元模型,树突输入,经过胞体加工后沿轴突延申方向传递输出

生物学的知识告诉我们,树突可以一个或多个,而轴突只有一个

类似的,人工神经元仿制,一个输入层有多个输入,一个隐藏层或多个隐藏层负责加工处理,一个输出层得到结果

但其实还有其他的神经网络拓扑结构,可以参考这位大佬的博客

神经网络拓扑结构 神经网络的拓扑结构_mob64ca13f2b62d的技术博客_51CTO博客

隐藏层实际是对输入数据进行加权求和、卷积变换、微积分等一系列数学计算

2.深度学习几个基础算法

1.人工神经网络

人工神经网络是深度学习中最基本的算法之一

它由多个神经元组成,每个神经元都有权重偏置,通过调整这些参数来实现模型的训练。人工神经网络可以学习复杂的非线性关系,并在各种任务中取得良好的性能。

简单翻译:像脑子一样,提前设定思考方式,输入数据后处理,输出;这个思考方式也可以使用反馈来不断自我调整修正参数,最后达到一个误差要求内的结果(正确的输出)

2.卷积神经网络(CNN)

卷积神经网络是专门用于处理图像语音二维数据的深度学习算法。

它利用卷积层、池化层和全连接层等不同类型的层组成,以自动提取出图像中的特征。CNN在计算机视觉和音频处理等领域广泛应用,如图像分类目标检测人脸识别等任务。

简单理解:对图片上的像素点或者音频的声波进行卷积计算,输出处理后的像素

3.循环神经网络(RNN)

循环神经网络是一种处理序列数据的深度学习算法。

它具有循环连接,可以将以前的信息传递到下一个时间步。RNN在自然语言处理、语音识别机器翻译等任务中表现出色。然而,传统的RNN在长序列上存在梯度消失和梯度爆炸的问题,因此出现了一些改进的模型,如长短时记忆网络(LSTM)门控循环单元(GRU)

简单理解:记得上一步的问题指令,能模拟与人交谈时,有上下文的感觉

4.生成对抗网络(GAN)

生成对抗网络是由生成器判别器两个网络组成的深度学习算法。

生成器网络试图生成与真实数据相似的假数据,而判别器网络则试图区分真实数据和假数据。通过训练生成器和判别器的对抗过程,GAN能够生成高质量的数据样本,广泛应用于图像合成、视频生成和文本生成等领域。

简单理解:有两个人,一个负责吹牛,一个负责检验真假(打脸),根据已知的真数据来比对新编的数据,然后不断迭代优化生成结果,直至以假乱真(有点像是现在的各种AI生成)

还有一些别的算法,可以自行去搜索学习

3.深度学习入门要求:数学基础

由于每个人对深度学习的掌握要求不同,以下为笔者建议的数学基础

1.会用就行,不要求理解

加减乘除

有python代码基础

高中基础(能差不多理解回归模型,知道输入输出,但不懂内部计算)

2.希望理解算法来加强记忆

微积分(高数)

线性代数

概率论与数理统计

一些大学理工科必备的数学基础(可理解大部分计算方法,如梯度,偏导数等)

二、深度学习几个基础包的导入

由于直接从官网下载的python不会自带numpy、pandas等深度学习基础包,所以需要手动下载,笔者这里使用的是pip命令

这个是运行时的报错:ModuleNotFoundError: No module named 'numpy',说明还没安装基础包

1.numpy下载

使用清华源的镜像下载,加快速度

pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

参考资料   

2.pandas下载

pip install pandas

参考资料 Pandas 安装 | 菜鸟教程 (runoob.com)

笔者用的是pycharm,遇到用win的cmd进行pip下载后,项目内却无法调用

这个是解决方法,其他问题可以先尝试通过搜索解决关于pip安装第三方库,但PyCharm中却无法识别的问题;以及PyCharm安装第三方库的方法解析_pycharm找不到第三方库-CSDN博客

还有一个问题,要区分pandapandas这两个包,不要漏了s

三、一个小型的练习案例

在引入基础包后,尝试做一个小的神经网络来体验

例子:用DNN拟合y=x²

1.导入基础包与函数

import numpy as np
import pandas as pd
import random

2.生成示例

random.seed(2016)
sample_size=50 #样本量设为50
sample=pd.Series(random.sample(
    range(-10000,10000),sample_size
))             #random.sample随机生成某个范围内的数
x=sample/10000
y=x**2

3.检查样本

打印前10个,检查x的值是否符合规定,左下为x,右下为y

print(x.head(10))
print(y.head(10))

可以使用describe函数来快速查看数据的摘要

print(x.describe())

这是笔者的样例输出,会包含结尾的dtype

4.格式化数据

这里书本使用的是neuralpy包——一个专门研究神经网络的机器学习库

使用该包前需要对数据进行格式转换

count = 0
dataSet = [([x.ix[count]],[y.ix[count]])]
count = 1
while (count < sample_size):
    print("Working on data item:",count)
    dataSet = (dataSet+ [([x.ix[count]],[y.ix[count]])])
    count = count + 1

5.拟合模型

拟合一个有两个隐藏层的DNN,第一层3个神经元,第二层7个

通过 neuralpy 的 Network 方法指定

import neuralpy
fit = neuralpy,Network(1,3,7,1)

这里的neuralpy库没安装进的别慌,因为笔者也没找到能用的方法,待笔者去寻找一些帮助再更新下载方法

epochs = 100
learning_rate = 1
print("fitting model right now")
fit.train(dataSet,epochs,learning_rate)
#传参给训练函数,样本,迭代最大次数和学习速率

6.性能表现评估

count = 0
pred = []
while (count < sample_size):
    out=fit.forward(x[count])
    print("Obs: ",count+1,
          "y = ",round(y[count],4)
          "prediction = ",round(pd.Series(out),4)
    pred.append(out)
    count = count + 1
          ) 
#预测值用fit.forward函数获得,通过while循环存在out中

下面是书中的输出结果,欢迎各位把尝试结果放在评论区,大家一起讨论

以上为笔者的学习笔记,如有不妥,欢迎各位指出0v0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值