深度学习基础知识点总结

提示:菜鸟入门日记,若总结有错误,各路大佬多多指教!


文章目录

  • 深度学习基础知识点总结
  • Looking for my friends
  • 一、零散知识点
    • 1、网络拼接和相加的区别
    • 2、nn.Conv1d, kernel_size=1与nn.Linear的区别
    • 3、Pytorch设置随机数种子,使训练结果可复现
    • 4、从零搭建网络并训练的实现
  • 二、系统总结
    • 1、pytorch提取参数及自定义初始化
    • 2、pytorch常用代码合集
    • 3、torchvision.transforms处理模块用法详解
    • 4、深度学习中的15种损失函数详解
    • 5、神经网络训练不收敛或训练失败的原因总结
    • 6、数据增强方法总结
    • 7、神经网络超参数的调参方法总结
    • 8、科研工具推荐大合集
  • !资源推荐
    • 1.学习小导
    • 2.摸鱼tips
  • Reference
    • 今日事件播报

Looking for my friends

…菜鸟刚接触touch信号处理,困惑多多。诚交做触觉或信号处理的朋友,一同交流 摆烂 ~

一、零散知识点

1、网络拼接和相加的区别

拼接:特征尺寸大小相同,在特征通道数上扩展,拼接结果为特征尺寸不变,通道数相加;如一个64×64×3的特征层与64×64×6的特征层拼接,结果为64×64×9的特征层。拼接的方式保留了更多的维度/位置 信息,这使得后面的 layer 可以在浅层特征与深层特征自由选择。

相加:指通道数相同,特征对应位置相加。如两个64×64×3的特征层相加,结果就是每层通道的对应位置相加,结果仍为一个64×64×3的特征层。相加的方式,feature map 的维度没有变化,但每个维度都包含了更多特征,对于普通的分类任务这种不需要从 feature map 复原到原始分辨率的任务来说,这是一个高效的选择。

2、nn.Conv1d, kernel_size=1与nn.Linear的区别

3、Pytorch设置随机数种子,使训练结果可复现

如果希望通过设置随机数种子,在gpu或cpu上固定每一次的训练结果,则需要在程序执行的开始处添加以下代码(示例):

'''设置随机数种子'''def setup_seed(seed):torch.manual_seed(seed)torch.cuda.manual_seed_all(seed)np.random.seed(seed)random.seed(seed)torch.backends.cudnn.deterministic = Truesetup_seed(20)  # 设置随机数种子
'''数据预处理...'''

4、从零搭建网络并训练的实现

大概可分为4个模块吧,实现CIFAR10分类,详见示例

import torch
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torch import nn
import numpy as np
import random
from torch.utils.data import DataLoader'''定义数据'''
def load_data():train_data = torchvision.datasets.CIFAR10(root="../data", train=True, transform=torchvision.transforms.ToTensor(),download=True)test_data = torchvision.datasets.CIFAR10(root="../data", train=False, transform=torchvision.transforms.ToTensor(),download=True)return train_data, test_datadef main():'''设置随机数种子 使训练结果可复现'''def setup_seed(seed):torch.manual_seed(seed)torch.cuda.manual_seed_all(seed)np.random.seed(seed)random.seed(seed)torch.backends.cudnn.deterministic = Truesetup_seed(20)# 指定训练设备device = torch.device("cuda" if torch.cuda.is_available() else "cpu")'''1、数据预处理模块'''# 获得数据及长度信息train_data, test_data = load_data()train_data_size = len(train_data)test_data_size = len(test_data)print("训练数据集的长度为:{}".format(train_data_size))print("测试数据集的长度为:{}".format(test_data_size))# 利用 DataLoader 来加载数据集train_dataloader = DataLoader(train_data, batch_size=64)test_dataloader = DataLoader(test_data, batch_size=64)'''2、模型构建模块'''# 创建网络模型,也可单独构建网络文件,实例化即可class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.model = nn.Sequential(nn.Conv2d(3, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, 1, 2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(64 * 4 * 4, 64),nn.Linear(64, 10))def forward(self, x):x = self.model(x)return x# 实例化模型并指定运行设备model = Model()model = model.to(device)'''3、定义损失函数等'''# 损失函数loss_fn = nn.CrossEntropyLoss()loss_fn = loss_fn.to(device)# 优化器learning_rate = 1e-2optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)# 记录训练的次数total_train_step = 0# 记录测试的次数total_test_step = 0# 训练的轮数epoch = 10# 添加tensorboardwriter = SummaryWriter("../logs_train")''' 4.构建训练过程 '''for i in range(epoch):print("-------第 {} 轮训练开始-------".format(i + 1))# trainmodel.train()for data in train_dataloader:imgs, targets = dataimgs = imgs.to(device)targets = targets.to(device)outputs = model(imgs)loss = loss_fn(outputs, targets)# 优化器优化模型optimizer.zero_grad()loss.backward()optimizer.step()total_train_step = total_train_step + 1if total_train_step % 100 == 0:print("训练次数:{}, Loss: {}".format(total_train_step, loss.item()))writer.add_scalar("train_loss", loss.item(), total_train_step)# validationmodel.eval()total_test_loss = 0total_accuracy = 0with torch.no_grad():for data in test_dataloader:imgs, targets = dataimgs = imgs.to(device)targets = targets.to(device)outputs = model(imgs)loss = loss_fn(outputs, targets)total_test_loss = total_test_loss + loss.item()accuracy = (outputs.argmax(1) == targets).sum()total_accuracy = total_accuracy + accuracyprint("整体测试集上的Loss: {}".format(total_test_loss))print("整体测试集上的正确率: {}".format(total_accuracy / test_data_size))writer.add_scalar("test_loss", total_test_loss, total_test_step)writer.add_scalar("test_accuracy", total_accuracy / test_data_size, total_test_step)total_test_step = total_test_step + 1torch.save(model, "model{}.pth".format(i))print("模型已保存")writer.close()if __name__ == "__main__":main()

二、系统总结

1、pytorch提取参数及自定义初始化

pytorch提取参数及自定义初始化
面对有时提取出的层结构并不够,还需要对里面的参数进行初始化的问题,本文简单介绍了如何提取出网络的参数并对其初始化。

2、pytorch常用代码合集

pytorch常用代码合集
PyTorch常用代码段合集,涵盖基本配置、张量处理、模型定义与操作、数据处理、模型训练与测试等5个方面,还给出了多个值得注意的Tips,内容非常全面。

3、torchvision.transforms处理模块用法详解

torchvision.transforms处理模块用法详解
简单介绍了transforms模块的用法,有实例介绍和代码实现。

4、深度学习中的15种损失函数详解

深度学习中15种损失函数详解
详细介绍了深度学习中的各种损失函数的优点和局限性。

5、神经网络训练不收敛或训练失败的原因总结

神经网络训练不收敛或训练失败的原因总结
文章分别从数据方面和模型方面分析了导致模型训练不收敛或失败的原因,数据方面总结了四种可能的原因,模型方面总结了九种可能的问题。除此之外,还介绍了每种潜在问题的产生后果或现象,并提供了常规做法。

6、数据增强方法总结

数据增强方法总结
本文介绍了数据增强的作用,数据增强的分类,数据增强的常用方法,一些特殊的方法,如Cutout,Random Erasing,Mixup,Hide-and-Seek,CutMix,GridMask,FenceMask和KeepAugment等方法,还介绍了一些基于多样本的增强方法,如SMOTE, mosaic和SamplePairing。

7、神经网络超参数的调参方法总结

神经网络超参数的调参方法总结
从实践的角度,手把手教你如何对神经网络超参数进行调参。本文涉及的调参目标有:学习率、Batch Size、网络深度与宽度、Epochs、L1、L2正则化与平衡系数、Dropout、激活函数

8、科研工具推荐大合集

科研工具大合集
作为一个平时就很辛苦的科研er,本着能用工具解决的问题绝对不花苦力的原则,收集了很多科研利器,现在分享给大家,相信大家看完以后科研效率都能够得到质的提升!

!资源推荐

欢迎补充~

1.学习小导

①极市平台(公众号):专注计算机视觉前沿咨询和技术干货 【吹爆!更新速率远超我的蜗牛进度,上有顶级论文实时解读!下有基础干货普照平民】
②机器之心(公众号):专业的人工智能媒体和产业服务 【看看新的技术产品和一些AI界八卦】
③AI科技评论(公众号)
④跟李沐学AI(bilibili)【沐神版high level课程、论文解读、机器学习深度学习课程】
⑤霹雳吧啦Wz(bilibili)【可以说,懂我者,霹雳老师也;把知识点化繁为简,易懂易上手】
⑥CV技术指南(公众号)【技术总结】

2.摸鱼tips

本code虫串山楂技术已出神入化,110串,坐等挑战

无尽江湖:http://t.cn/A6PLFX50
召唤神龙:http://t.cn/A6xgjIKF
交换冰淇淋:http://t.cn/A6JvzNbk
水果大王:http://t.cn/A6VaWJv7
苹果的诱惑:http://t.cn/A6hDZLMR
串山楂:http://t.cn/A6MkRZ8U
我的停车场:http://t.cn/A6MkRZ8G
暴力厨房:http://t.cn/A6xD8SIZ
女皇登基:http://t.cn/A6xjfCb3
龟龟滑雪:http://t.cn/A6Il6q65
车水马龙:http://t.cn/A6c9W6G9
枪王之战: http://t.cn/A6yy20F4
画地为牢: http://t.cn/A6JvUa2A
牛气冲天: http://t.cn/A67ZZWnm
剪指甲: http://t.cn/A6xkrPcZ
小鸭子过河: http://t.cn/A6xkNeKf
倒酒: http://t.cn/A6xpr8SX
凿壁借光: http://t.cn/A6xHzUcf
弹珠碰碰: http://t.cn/A6IK8B3w
转盘小丸子:http://t.cn/A6MKKk6w
合成大西瓜:http://t.cn/A65yQIb7

Reference

[1]https://zhuanlan.zhihu.com/p/76472385
[2]www.cvmart.net
[3]https://zhuanlan.zhihu.com/p/285601835

今日事件播报

4.15推荐歌曲:听了就知道
4.16推荐乐队:散人乐队!蓬蒿人
4.17推荐乐队:对角巷!我们都是被困在这个城市的精灵~Tonight
4.18放松一下哈哈哈
4.28不好意思断更了,em来一首温柔吧
4.29要放五一啦!跟着PeaceHotel黎明前出发!

深度学习基础知识每日更 upupup相关推荐

  1. 基于人脸的常见表情识别(1)——深度学习基础知识

    基于人脸的常见表情识别(1)--深度学习基础知识 神经网络 1. 感知机 2. 多层感知机与反向传播 卷积神经网络 1. 全连接神经网络的2大缺陷 2. 卷积神经网络的崛起 卷积神经网络的基本网络层 ...

  2. 深度学习基础知识(八):神经网络基础之导数

    这个专栏主要是想和大家分享一下深度学习的基础知识,主要是以吴恩达老师深度学习课程内容作为基础,并补充了很多其他内容希望让整体内容更加容易理解和系统化.如果想要了解具体专栏里面有什么内容的话,可以看一看 ...

  3. 深度学习基础知识介绍

    背景知识 深度学习又是如何运作的呢? 神经网络 训练神经网络 如何减小损失函数呢? 小结 这是一篇Medium上获得近2万赞的深度学习入门指南,用图文为你详解深度学习中的各个基础概念. 在我们的日常生 ...

  4. 深度学习基础知识整理

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kwame211/article/details/81165381 本文是在七月的BAT机器学习面试1 ...

  5. 【深度学习基础知识 - 28】三维重建中的点云、体素、mesh

    点云.体素和mesh都是三维重建中常用的三维物体的表示方法. 1. 点云 1.1 点云的概念 点云是不规则的数据结构,就是用一堆点来表示物体,这种方法的限制是点与点之间没有联系,缺乏物体的表面信息. ...

  6. 【深度学习基础知识 - 07】BN的原理和作用

    Batch Normalization也是深度学习中的一个高频词汇,这篇文章将会对其做一个简单介绍. 目录 1. BN的原理 2. BN的作用 3. BN层的可学习参数 4. infer时BN的处理 ...

  7. 【深度学习基础知识 - 21】加快模型训练速度的方法

    在深度学习任务中,虽然可以通过堆叠参数.设计更复杂的结构来提高模型的表征能力,但这也会导致模型的计算量增加,训练时间延长,大大降低模型的产出效率.这篇文章根据博主的经验简单介绍一些加快模型训练速度的方 ...

  8. 深度学习基础知识(一): 概述-神经网络起源和发展

    目录 1. 神经网络概述 1.1 概念和起源 1.2 神经网络基本结构 1.2.1 神经元数学模型 1.2.2 sigmoid激活函数 1.2.3 神经网络结构 1.3 我对神经网络的构建和流程理解 ...

  9. 深度学习基础知识(人工智能)

    导读:人工智能时代已经到来,AlohaGO的击败李世石成为了围棋界的神话,让许多人震惊不已.那么AlphaGo是怎么产出的呢?它是源自于人工智能的深度学习. 这是小编的其他文章,希望对大家有所帮助,点 ...

最新文章

  1. Linux服务器通过rz/sz轻松上传下载文件
  2. 分布式文件系统研究-fastDSF文件上传和下载流程
  3. Kubernetes 并非灵丹妙药...
  4. NTFS USN的Create和工具代码汇总
  5. 还是不知道怎么用FreeTextBox 3.0,郁闷致死
  6. [Java] 蓝桥杯ALGO-143 算法训练 字符串变换
  7. appium学习【三】:截图时,图片命令中包含当前的函数名,以区分错误是在哪个函数报的...
  8. Linux Cgroups详解(一)
  9. [洛谷P4838]P哥破解密码
  10. Firefox国际版与国内版
  11. centos7安装redies
  12. python英语单词 扇贝英语安卓下载_扇贝单词英语版app下载-扇贝单词英语版v3.5.803 安卓版-腾牛安卓网...
  13. 数据安全之数据分类分级系统建设
  14. python 将base64字符串还原成图片保存
  15. Flink 消费Kafka的有趣现象:固定时间、固定数量的堆积
  16. 深度学习 一 :使用BERT做 NLP分类任务
  17. 困扰老子好久啊!!tomcat的两个错…
  18. js 逻辑与 逻辑或 快速记忆方法
  19. Android5g手机,【手机篇】5G手机推荐
  20. idea创建包时不分级展示的解决方案

热门文章

  1. Kubernetes--k8s---存活探针和就绪探针的最佳实践
  2. Fbx File Format Identifier
  3. Unsupervised Domain Adaptation via Structurally Regularized Deep Clustering-CVPR2020
  4. 东邪、西毒、南帝、北丐、中神通五大操作系统之华山论剑(独评)
  5. 42步进电机转速力矩曲线_步进电机的转速 – 转矩曲线
  6. python中prompt的意思_Python 基础知识入门
  7. 基于字典的中文分词算法RMM
  8. 自然语言处理之中文分词逆向最大匹配算法(RMM算法)
  9. IPD管理体系中的产品和技术研发执行团队
  10. python3.6学习十四 提示和传递