动手学深度学习
梅津太郎
这个作者很懒,什么都没留下…
展开
-
【杂烩】随机种子和多线程采样设置
【代码】【杂烩】随机种子和多线程采样设置。原创 2022-12-27 08:32:54 · 175 阅读 · 0 评论 -
【杂烩】Tesla M40 训练机组装与散热改造
原文链接:链接我现有的笔记本内部有一张 GTX1060,6G 的显存在进行神经网络训练时不免有些捉襟见肘。此外,笔记本在进行训练时散热也是个大问题,遂萌生了搭建专用训练服务器的想法。作为一个贫穷学生仔,我的基本需求也很简单:便宜、大显存。冲浪一圈后,发现上古 Tesla M40 计算卡很符合我的需求,24G 显存版本在闲鱼基本 1200 元即可拿下。尽管其算力大致只与 GTX 980Ti 持平,但跑的慢远比不能跑强。如果预算还可以往上提个 1300 左右,大可直接拿下 Tesla P40 24G版本,算力可转载 2022-06-26 19:43:27 · 4556 阅读 · 4 评论 -
【杂烩】Tesla M40 24G 在Win11上的双显卡显示实现、改风冷
转载地址:链接 本文旨在总结最近的折腾经历。目的有二,一是梳理思路,做一个记录,二是为准备折腾的小伙伴提供一个参考。Tesla M40 24G实际上是计算卡,不是显卡,但是在后文中为了表述方便,仍以“显卡”代称。话不多说进入正题。 本人的硬件配置(先来个大师图,大师版本5.21.1300.108)图1.1 整机配置图 由于使用的是AMD R5 2600X + MSI B450 motor 组合没有核显输出,同时M40没有视频输出接口,所以需要使用另外一张显卡进行视频转载 2022-06-26 18:52:52 · 33328 阅读 · 9 评论 -
【信息汇总】国际会议列表
知乎资料A类会议会议简称会议全称截稿时间会议时间官方网址接受率会议1会议2––会议简称会议全称截稿时间会议时间官方网址接受率ICCV2021International Conference on Computer Vision––http://iccv2021.thecvf.com/home–AAAI2022AAAI Conference on Artificial Intelligence202原创 2022-01-07 16:45:24 · 1581 阅读 · 0 评论 -
【深度学习】不同框架下的默认数据通道顺序
NCHW类型:caffe: NCHWpytorch: NCHWmxnet: NCHW海思bgr: NCHWNCNN: CHWNHWC类型:tensorflow: NHWCopencv: NHWC瑞芯微rknn: NHWCscipy.misc: NHWC原创 2021-11-07 17:00:52 · 570 阅读 · 0 评论 -
【python】冗余冲突问题
import osos.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"原创 2021-10-29 09:33:24 · 1520 阅读 · 0 评论 -
【深度学习】torchvision.utils.make_grid() 拼接图片
import torchfrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderimport torchvisionimport matplotlib.pyplot as plt def image_show(images): images = images.numpy() images = images.transpose((1, 2, 0)) print(im原创 2021-10-29 09:31:03 · 1307 阅读 · 0 评论 -
【深度学习】tensorboard中的图片放到论文中
1. 利用tensorboard中的导出数据功能选中左上角的标签,然后选择csv格式的数据下载即可。左边的smoothing 数值不影响导出数据的大小。2.tensorboard 图下标签介绍:放大Toggle y-axis log scale:将y轴对数化Fit domain to data:如果拖动了图片等,再重新回到原始位置Download Current Chart as SVG3.用下载下来的csv数据来画图第一幅图片:训练的平均长度fig, ax1 = plt.sub原创 2021-10-28 15:53:51 · 10023 阅读 · 3 评论 -
【深度学习】torch.nn.parallel.DistributedDataParalle示例
import datetimeimport osimport torchfrom torch import nnfrom torch import optimfrom torch.autograd import Variablefrom torch.utils.data import DataLoaderfrom torchvision import transformsimport joint_transformsfrom config import msra10k_pathfro原创 2021-10-13 09:24:24 · 557 阅读 · 0 评论 -
【深度学习】小技巧小知识备忘录
model.modules()是对模型的所有不同层面的子层,子层的子层进行输出,组成一个的一个list。比如:listm[2]Out[20]: ConvBNActivation( (0): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_.原创 2021-09-29 17:17:35 · 1712 阅读 · 0 评论 -
【深度学习】pytorch多GPU训练
原理多卡训练的基本过程首先把模型加载到一个主设备把模型只读复制到多个设备把大的batch数据也等分到不同的设备最后将所有设备计算得到的梯度合并更新主设备上的模型参数#!/usr/bin/python3# coding: utf-8import torchfrom torchvision import datasets, transformsimport torchvisionfrom tqdm import tqdmdevice_ids = [3, 4, 6, 7]BATCH原创 2021-09-05 21:50:46 · 210 阅读 · 0 评论 -
【深度学习】Torch中Tensor.contiguous()作用
原创 2021-05-25 15:54:19 · 350 阅读 · 0 评论 -
深度学习笔记9:卷积层的实现(forward, backward 的实现)
用for循环实现的卷积层:卷积运算:import time""" 定义2维度卷积的非矩阵操作"""def Conv2d(X,W, stride, pad, dilation=1): """ 参数说明: :param X: 输入,batchsize, in_rows, in_cols, in_channels. :param W: 权重,shape: kernel_row, kernel_col, in_channels, out_channels....原创 2021-05-08 09:37:12 · 1735 阅读 · 0 评论 -
深度学习笔记8:卷积的矩阵实现
上一篇文章中对卷积进行概念的说明,并且用for循环进行了运算和实现,但是从运算时间上看,明显很慢。这次利用矩阵运算对卷积进行运算:方法就应用矩阵索引的方法,从扩展后输入X 抓取需要计算的像素单元,也就是与上边黄色权重对应的相撞的图像块,只不过图像块此时与W都是一维展平的。上图为行索引,下图为列索引,卷积核窗口在X图像上进行滑动的时候,行索引不变,列索引连续变化,滑动到尾部的时候,行索引加1,列索引从头开始继续变化,直到移动到右下角的单元格。可以看到两个矩阵的行数都是 k k * n_i原创 2021-05-06 19:52:00 · 1401 阅读 · 0 评论 -
深度学习笔记7:各种类型卷积图解
普通卷积:深度可分离卷积分组卷积扩张卷积代码: 待更新原创 2021-05-05 10:02:31 · 620 阅读 · 0 评论 -
深度学习笔记(6)BatchNorm批量标准化
代码实现:from utils import *import numpyclass BatchNorm1D(LayerBase): """ 集成基础的层,需要计算三个梯度,对x的梯度,以及线性变换的两个梯度""" def __init__(self, momentum = 0.9, epsilon = 1e-6, optimizer=None): super().__init__(optimizer) # 必须有optimizer这个基类的变量。 ...原创 2021-05-04 12:59:26 · 326 阅读 · 0 评论 -
深度学习笔记(5):各种优化器
Sgd:from abc import abstractmethod,ABCimport numpy as npclass OptimizerBase(ABC): def __init__(self): pass def __call__(self, params, params_grad, params_name): return self.update(params, params_grad, params_name) @abstrac原创 2021-04-30 10:43:35 · 197 阅读 · 0 评论 -
【深度学习】Dropout 包装实现
# -*- coding: utf-8 -*- # time : 2021/4/29 16:58# task: import numpy as npfrom abc import ABC,abstractmethodclass Dropout(ABC): """ wrappered layer : 被dropoutde 的layer p: 神经元保留率。 """ def __init__(self,wrapped_layer, p): .原创 2021-04-29 18:11:14 · 222 阅读 · 0 评论 -
【深度学习】模型平均误差分析
原创 2021-04-29 16:48:53 · 610 阅读 · 0 评论 -
【深度学习】 图像增强操作
### 图像的类别不进行改变,平移,旋转,缩放等增强。import numpy as npimport mathimport reimport matplotlib.pyplot as pltclass Image(object): def __init__(self, image): """ 进行各种图像增强的方式 :param image: 输入图像。 """ self._set_params(image原创 2021-04-29 13:21:26 · 239 阅读 · 0 评论 -
深度学习笔记(4): Xavier神经网络参数初始化方法
代码:def xavier_init(fan_in, fan_out, constant = 1): low = -constant * np.sqrt(6.0 / (fan_in + fan_out)) high = constant * np.sqrt(6.0 / (fan_in + fan_out)) return tf.random_uniform((fan_in, fan_out), minval=low, maxval=high, dtype=tf.float3...原创 2021-04-28 10:23:21 · 400 阅读 · 0 评论 -
【深度学习】mask,mul(*),以及sum()操作注意事项
1. mask操作:在矩阵操作中经常要根据矩阵的值进行mask操作,各个维度mask操作不熟悉感觉很头疼,记录一下:新建一个b矩阵,shape: 32,3,3,3b.shapeOut[174]: torch.Size([32, 3, 3, 3])如果要对第一维进行mask:mask掩码的维度需要与第一个维度的大小一致,也需要是32:mask = torch.randn(32)>0b[mask].shapeOut[177]: torch.Size([20, 3, 3, 3])可原创 2021-04-26 22:57:59 · 1241 阅读 · 0 评论 -
深度学习笔记(2):参数范数惩罚L1和L2
自定义正则L1,L2类# -*- coding: utf-8 -*- # author: # time : 2021/4/28 13:04# task: 自定义的正则类。""" 导入包"""from abc import ABC, abstractmethodimport numpy as npfrom PIL import Imagefrom matplotlib import pyplot as pltimport mathimport sysimport ...原创 2021-04-26 10:41:15 · 621 阅读 · 0 评论 -
【深度学习】自定义自动求导函数
参考:链接1,链接2官方示例:import torchfrom torch.autograd import Variableclass MyReLU(torch.autograd.Function): """ We can implement our own custom autograd Functions by subclassing torch.autograd.Function and implementing the forward and backward p原创 2021-04-25 12:57:19 · 450 阅读 · 0 评论 -
【深度学习】softmax 注意事项
公式:注意事项1:0 值进行softmax后还应是0的问题:x = torch.tensor([[0,1],[2,3]]).type(dtype=torch.float32)xOut[92]: tensor([[0., 1.], [2., 3.]])对这个张量应用softmax 得到:Out[93]: tensor([[0.2689, 0.7311], [0.2689, 0.7311]])但我希望0 值softmax后应该是0啊。改写:x = t原创 2021-04-24 16:56:47 · 575 阅读 · 0 评论 -
【深度学习】numpy.tile(),numpy.repeat(),torch.repeat(),torch.repeat_interleave()
其中1. np.tile, tensor.repeatnumpy.tile()torch.repeat()两者类似,将矩阵或者numpy整体进行扩展:# numpy.tile()aOut[44]: tensor([[1, 2], [3, 4]])np.tile(a,[1,3])Out[46]: array([[1, 2, 1, 2, 1, 2], [3, 4, 3, 4, 3, 4]], dtype=int64)np.tile(a,[3,1])原创 2021-04-24 09:10:57 · 546 阅读 · 0 评论 -
【深度学习】softmax 函数求导
def _bwd(self,dLdy,X): dX = [] for dy,x in zip(dLdy, X): dxi = [] for dyi, xi in zip(*np.atleast_2d(dy, x)): # 用xi 计算yi. # 梯度:当i=j : yj - yj yj, 当i \= j : -yj yj # dyi,xi 都是矩阵,1 n_o..原创 2021-04-22 19:33:43 · 385 阅读 · 0 评论 -
【深度学习】激活函数
1.ELU小于0的部分是exp(x)-1, 大于0时为1. 激活函数有负,可以是激活后的便宜向0靠近。2. hardshrink:3 hardsigmoid:优点:计算速度快(sigmoid)的近似缺点:1.仍然会出现梯度消失问题.2.和dying relu类似,部分参数不会被更新4.Hardtanh5.swish当β = 0时,Swish变为线性函数f(x)=x/2β → ∞, σ(x)=(1+exp(−x))−1σ(x)=(1+exp(−x))−1为0或1.原创 2021-04-22 00:39:13 · 733 阅读 · 0 评论 -
【深度学习】ConvTranspose2d步骤分析
原创 2021-04-21 23:36:56 · 264 阅读 · 1 评论 -
深度学习笔记(1):损失函数和激活函数的选择关系
代码:from abc import ABC, abstractmethodimport numpy as npimport timeimport refrom collections import OrderedDictclass ActivationBase(ABC): def __init__(self, **kwargs): super().__init__() def __call__(self, z): if z.ndim == 1: z = z....原创 2021-04-21 16:48:24 · 815 阅读 · 4 评论 -
论文阅读笔记(8): 图卷积半监督分类
代码:参考:链接pytorch git hub: 链接# -*- coding: utf-8 -*- # time : 2021/4/19 19:52# task: gcn 代码解读import torchimport numpy as npimport scipy.sparse as spimport sysfrom sklearn.preprocessing import OneHotEncoderimport sklearnimport pandas as p...原创 2021-04-20 19:48:30 · 385 阅读 · 0 评论 -
【深度学习】训练前设置随机种子,使实验结果可重复
parser = argparse.ArgumentParser()parser.add_argument('--random-seed', type='int', default=40, help='Random seed.')args = parser.parse_args()pytorch:np.random.seed(args.seed)torch.manual_seed(args.seed) tensorflow:tensorflow:原创 2021-04-20 18:40:23 · 4310 阅读 · 2 评论 -
【深度学习】无向图构建问题
在构建图的时候,通常是根据节点关系构建有有向图,但是gcn中使用的无向图。比如上图,构建有向图的邻接矩阵A为:array([[0, 1, 1], [0, 0, 0], [1, 1, 0]])''A.T > A :array([[False, False, False], [ True, False, True], [False, False, False]])A* (A.T>A) :array([[0, 0, 0],原创 2021-04-20 16:26:56 · 1163 阅读 · 0 评论 -
【深度学习】梯度下降方向解读
参考:博客 本文主要来自李宏毅老师的PPT 假设给定损失函数和梯度下降的初始点,那么就可以在这个点附近找出最小值点,那么就可以以这个最小值点出发,同样画一个范围,找出该范围内的最小值点,循环迭代直至找到最优解。那么问题是,如何最快的找到最优解?换种说法就是从哪个方向找loss下降的最快? 这里引入泰勒展开式进行说明,泰勒展开式的几何意义是可以利用一个函数在某点的信息描述该点附近点的取值信息。原创 2021-04-20 10:41:30 · 914 阅读 · 0 评论 -
【深度学习】tf.slice解读
def slice(input_, begin, size, name=None):# pylint: disable=redefined-builtin """Extracts a slice from a tensor. This operation extracts a slice of size `size` from a tensor `input` starting at the location specified by `begin`. The slice `size` is原创 2021-04-18 14:12:34 · 1790 阅读 · 0 评论 -
【深度学习】python矩阵乘积运算(multiply/maumul/*/@)
在训练数据时经常涉及到矩阵运算,有段时间没有练习过了,手便生疏了,今天重新测了一把,python中各类矩阵运算举例如下,可以清楚的看到tf.matmul(A,C)=np.dot(A,C)= A@C都属于叉乘,而tf.multiply(A,C)= A*C=A∙C属于点乘。 Python测试编码如下: import tensorflow as tfimport numpy as npa = np.array([[1,2],[3,4]])b = np.arr...原创 2021-04-18 12:34:19 · 1088 阅读 · 1 评论 -
scatter_()函数
一、函数介绍scatter_(input, dim, index, src):将src中数据根据index中的索引按照dim的方向填进input。可以理解成放置元素或者修改元素 dim:沿着哪个维度进行索引 index:用来 scatter 的元素索引 src:用来 scatter 的源元素...原创 2020-07-27 15:46:28 · 710 阅读 · 0 评论