深度学习快速入门--7天做项目
- [0. 引言](#0. 引言)
- [1. 本文内容](#1. 本文内容)
- [2. 深度学习是什么](#2. 深度学习是什么)
- [3. 项目是一个很好的切入点](#3. 项目是一个很好的切入点)
- [4. 7天做项目](#4. 7天做项目)
-
- [4.1 第一天:数据整理](#4.1 第一天:数据整理)
- [4.2 第二天:数据处理](#4.2 第二天:数据处理)
- [4.3 第三天:简单神经网络设计](#4.3 第三天:简单神经网络设计)
- [4.4 第四天:分析效果与原因](#4.4 第四天:分析效果与原因)
- [4.5 第五天:整理代码](#4.5 第五天:整理代码)
- [4.6 第六天:理解代码](#4.6 第六天:理解代码)
- [4.7 第七天:升级代码](#4.7 第七天:升级代码)
- [5. 总结](#5. 总结)
- 欢迎来稿
0. 引言
近段时间,之前的老板让我带下小师弟。然后按照给照小师弟的项目指导,正好出这篇文章来帮助那些想要深度学习入门或者刚接触深度学习的人。纯属拙见,仁者见仁智者见智,请勿言辞激烈讨论,感谢。。。
1. 本文内容
- 深度学习是什么
- 项目是一个很好的切入点
- 7天做项目
- 谢谢大家看完
2. 深度学习是什么
贴一些概念,大家了解即可。。。简单来说就是通过寻找数据之间的关系来进行某种决策
深度学习(Deep Learning)是机器学习的一个分支,其目标是通过模拟人脑神经网络
的结构和功能,让计算机具有学习
和执行特定任务
的能力。深度学习的核心概念是神经网络
,特别是深层神经网络,这些网络由多个层次(深度)的神经元组成。
主要的深度学习模型是人工神经网络(Artificial Neural Networks,简称ANNs),其中深层神经网络是一种特殊类型的神经网络,具有多个隐藏层。这些网络通过学习从输入数据中提取特征,逐渐建立起对任务的复杂抽象和表示。神经网络的图像如下所示:
3. 项目是一个很好的切入点
为什么说项目是一个很好的切入点呢? 因为天天看视频,看书
,对于现在很多适应快节奏的人都不是很合适,更何况老板那边也在催你赶快出成果
、看完了一遍又一遍还是不太会用呀
!!或者说本来就没要求那么多、那么精通,我只是要求会用
,为啥要为难自己呢?
这个时候,就要考虑从项目出发,然后以一个7天的计划来要求自己按照下面的内容来做!! 做完之后你肯定就对其有一个很好的了解了,当然了不管用也不要来找我,我也没收钱啊
。。。。
4. 7天做项目
前面的准备时间就不再算了啊,项目分成简单回归项目
和简单分类项目
,这个自己要分辨清楚。然后的话是使用的是基本的神经网络结构(当然有人要吐槽了,这都是多少年前的结构了怎么还用这个。 饭要一口一口吃,所有事情都是从简单做起,先搭建一个简单框架,然后慢慢在上面修正,你也就慢慢在进步了
)。
4.1 第一天:数据整理
数据往往是深度学习领域的必杀技,为了得到一个好的结果,一定要有一个不错的数据。因此,我们首先需要对数据进行整理。打开数据文件后,我们需要对数据进行简单观察,查看下数据的各个结构。
例如上面这个数据,存在一个选项是stock,这就说明可能存在多个stock。我们在做的时候是否需要将每个类别区分出来也是我们需要考虑的事情
。另外,假如说数据中存在异常值(前面的时候异常值不考虑)或者空值(读取的时候会反应为NAN)
,这个我们后续都要对其进行处理的。
注意:必要的时候需要对数据绘制图像来观察数据。。。
4.2 第二天:数据处理
在对数据进行整理后,拿到了自己跑模型的那一批数据,也就意味着我们需要对数据进行处理(数据清洗)了。
对数据进行清洗通常包含以下内容:
- 缺失值处理 :检测并处理数据中的缺失值。这可能包括删除缺失值、使用插值方法填充缺失值(
pandas库有自带的方法
),或者通过其他手段进行处理。 - 数据类型转换 : 确保数据的类型正确,例如将字符串转换为数字、日期格式的处理等。
对于神经网络模型而言,能理解的只有数值型数据
,因此可能需要进行onehot embedding
或者label embedding
。 - 标准化和归一化: 对数据进行标准化或归一化,确保不同特征之间的尺度一致,有助于提高模型的稳定性和性能。
当然,数据处理还有很多操作,这里只介绍基本操作!!!!
4.3 第三天:简单神经网络设计
首先需要安装对应的软件,安装Pytorch(科研推荐),有想用Tensorflow的也支持!!
然后,设计一个简单的神经网络,下面贴上简单神经网络的代码:
python
import torch
import torch.nn as nn
class BPNN(nn.Module):
def __init__(self):
super(BPNN, self).__init__()
self.hidden_layer = nn.Sequential(
nn.Linear(13, 15),
nn.Sigmoid())
self.out_layer = nn.Sequential(
nn.Linear(15, 1),
nn.Sigmoid())
def forward(self, x):
out = self.hidden_layer(x)
out = self.out_layer(out)
return out
网络设计或者结构可以从网上找到,大家多搜索一下就能找到清晰地了,这里就不献丑了!!!
4.4 第四天:分析效果与原因
将跑出来的预测结果与真实值进行比较,在跑的时候不要害怕跑的次数太多(之前的师弟跑了50次就停了,结果模型就是一个类似于半圆,你让他收敛一会儿啊。。。。)。另外,对于比较的结果记得用反归一化的结果,不要用还是之前归一化后的结果,这样的话容易看不出来真实比较的情况!!!
对于各种各样跑出来的情况,记得在网上找相关内容来查阅,这样会让你更深刻地理解代码!!! 不要害怕出错
4.5 第五天:整理代码
将你的代码整理成一个完整的项目,不要给出多余的内容!!!(此时的代码才是一个完整的Project!! 恭喜!!!)
4.6 第六天:理解代码
将你的代码再理解一遍吧,该打上的注释都要打上,每一行代码都要理解其功能哦!!!(这个时候就要发挥这是什么的多问精神,不停问自己这是什么。。。)
4.7 第七天:升级代码
代码这么简单,不给代码升级一下? 不换一下网络结构? 不搞一些牛的东西进去吗?! (加油吧!!小伙子,你已经出师了!!!)
5. 总结
到此,使用 深度学习快速入门--7天做项目 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。
欢迎来稿
欢迎投稿合作,投稿请遵循科学严谨、内容清晰明了的原则!!!! 有意者可以后台私信!!