
Deep Learning
糖公子没来过
学生一枚
展开
-
在Windows下利用WSL配置Linux环境,利用Anaconda自动搭建PyTorch虚拟环境,以及手动安装CUDA与cuDNN并配置tensorflow环境
WSL(Windows Subsystem for Linux)是微软开发的一项技术,允许用户在Windows系统中直接运行完整的Linux环境,无需虚拟机。通过操作系统级虚拟化,WSL将Linux子系统无缝嵌入Windows,提供原生Linux命令行工具、软件包管理器及应用程序支持。它具有轻量化、文件系统集成、良好的交互性及开发效率提升等优点,消除了Windows与Linux之间的隔阂,尤其适合开发者和需在Windows平台上使用Linux工具的用户。原创 2025-04-27 19:22:44 · 729 阅读 · 0 评论 -
GAN与WGAN——对抗神经网络
GAN不是进行分类或图像识别语音识别等功能的,它的功能是通过深度学习网络学习到某些特征,然后自动生成符合这种特征的数据(比如图像等)。GANGenerator DiscriminatorGenerator是一个神经网络,负责将一组随机噪声生成一个图像Discriminator也是一个神经网络,它负责判断由Generator生成的图像与真实图像之间的差距,并返回这个图像是真是假的判断。无论是Generator还是Discriminator,它们的目的都是学习到真实Training Se原创 2021-10-29 11:04:48 · 1495 阅读 · 0 评论 -
Auto-Encoders
非监督学习Why neededAuto-EncodersHow to trainMaximize LikelihoodMinimize KL DivergenceHow to compote KL between q(z) and p(z)实战Auto-Encoderimport osimport tensorflow as tfimport numpy as npfrom tensorflow import ke...原创 2021-10-26 21:26:00 · 137 阅读 · 0 评论 -
ResNet实战
Basic BlockRes BlockResNet-18源码resnet.pyimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layers, Sequentialclass BasicBlock(layers.Layer): def __init__(self, filter_num, stride=1): .原创 2021-10-24 10:46:18 · 289 阅读 · 0 评论 -
ResNet 与 DenseNet
ResNetThe residual moduleResNet 残差网络,F(x) + x = H(x),那么F(x) = H(x) - x,“残差”就是这么来的为了使网络层数加深也不至于比浅层次网络的性能差,设计出了这样一种带有“短路机制”的网络,一个BasicBlock的结果是网络F(x)与直连x的和上面显示了参数量正是因为ResNet有这种性质,ResNet可以做的很深Basic BlockRes BlockResNet-18DenseN..原创 2021-10-24 10:41:51 · 175 阅读 · 0 评论 -
Batch Normalization
提出原因使用Sigmoid 激活函数时如果数据的分布范围较大,训练时容易出现梯度弥散现象,因此提出了Batch Normalization的方法另外,从另一个角度,如果输入的数据大小差别过大,就会导致参数w在某一个方向上梯度变化不明显而另一个方向上梯度变化比较大,这个时候的网络优化的效率是比较低的。如果数据输入都是在一定范围内的话,网络优化起来效率就会比较高,就像下面李宏毅老师的图一样NormalizationNorm如上图所示,有很多Norm的方法,但其实只是角度不同,每次原创 2021-10-24 10:15:09 · 191 阅读 · 0 评论 -
卷积神经网络
卷积神经网络介绍为什么要“卷积”全连接所需要的参数数量过多,尤其对于现在处理的数据量来说更多,对应硬件显存要求巨大。为了减少这部分需求,同时对神经网络也能够实现很好的训练,提出了卷积神经网络的概念如何实现权值共享一些概念 feature maps: 比如说在Computer Vision 领域中,feature map 指的就是图像,包括输入的原始图像以及通过神经网络各层处理出来的“中间图像”。中间图像加引号是因为有的层处理完之后的由于维度发生了变换,无法呈现出一个图像原创 2021-10-22 16:11:10 · 1552 阅读 · 0 评论 -
TensorFlow_其他的训练Tricks
TricksEarly Stopping Dropout Stochastic Gradient DescentEarly StoppingDropout注意:out = network(x, training=True) 这一行中,设置training参数为True对比下面设置为False注意:dropout 在做 test 的时候不能使用,做 test 的时候要求全连接,以得到最好的效果stochastic 在这里并不是取它的汉语意思“随机的”.原创 2021-10-21 19:36:14 · 209 阅读 · 1 评论 -
动量与学习率
momentum(势能) learning rate decay(学习率衰减)Momentum上面是之前的参数更新公式,下面两个是带Momentum的参数更新公式可以看到两者之间的变化就是关于梯度的计算带Momentum的梯度计算中是这一步的梯度和上一步梯度的求和!!这样的话就会保留一些之前动量的信息在TensorFlow中实现Learning rate tunningLearning rate decay(学习率衰减)Adaptiv...原创 2021-10-21 17:17:39 · 289 阅读 · 0 评论 -
Regularization(正则化)——避免过拟合
L1正则化和L2正则化import tensorflow as tffrom tensorflow.keras import datasets, layers, optimizers, Sequential, metricsdef preprocess(x, y): x = tf.cast(x, dtype=tf.float32) / 255. y = tf.cast(y, dtype=tf.int32) return x,ybatc...原创 2021-10-21 16:57:09 · 189 阅读 · 0 评论 -
TensorFlow中的交叉验证
交叉验证是用来避免模型的过拟合和欠拟合现象Train, TestTrain, val, testEvaluate during trainTest after trainingk-fold cross validation用到一个.gather 方法,提取出x和y的随机的50k数据(因为idx经过了shuffle);并且是在每一个epoch中都进行一次随机提取,epoch有500次,也就是做了500次交叉验证...原创 2021-10-21 14:58:03 · 1607 阅读 · 0 评论 -
Keras 实战
import tensorflow as tffrom tensorflow.keras import datasets, layers, optimizers, Sequential, metricsfrom tensorflow import kerasimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'def preprocess(x, y): # [0~255] => [-1~1] x = 2 ...原创 2021-10-21 08:35:50 · 276 阅读 · 0 评论 -
TensorFlow——模型保存与加载
save/load weights save/load entire model saved_modelsave_load_weights.pyimport tensorflow as tffrom tensorflow.keras import datasets, layers, optimizers, Sequential, metricsdef preprocess(x, y): """ x is a simple image, no...原创 2021-10-21 08:27:52 · 600 阅读 · 0 评论 -
Keras 高层API
Keras.MetricsStep 1. Build a meterStep 2. Update dataStep 3. Get Average dataClear bufferimport tensorflow as tffrom tensorflow.keras import datasets, layers, optimizers, Sequential, metricsdef preprocess(x, y): x = tf.c..原创 2021-10-21 08:09:31 · 129 阅读 · 0 评论 -
Fashion MNIST 实战
import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import datasets, layers, optimizers, Sequential, metricsimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'def preprocess(x, y): x = tf.cast(x, dtype=tf.float32) / .原创 2021-10-20 21:02:35 · 89 阅读 · 0 评论 -
TensorFlow——Himmelblau函数优化实战
Himmelblau function最小值PlotGradient Descentimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import pyplot as pltimport tensorflow as tfdef himmelblau(x): return (x[0] ** 2 + x[1] - 11) ** 2 +...原创 2021-10-20 20:46:24 · 186 阅读 · 0 评论 -
TensorFlow——梯度计算
Gradient Descent核心公式For instanceGradientTape如果不将需要求梯度的 w 放入GradientTape中,就不能自动求 w 的梯度另外,GradientTape 有一个参数persistent,如果不设置的话,tape.gradient 只能用一次,也就是只能求一次梯度,再用的话就会报错二阶导的求法例如:激活函数及其梯度sigmoidtanhreluSigmoidtf.sigm...原创 2021-10-20 20:29:08 · 1079 阅读 · 0 评论 -
TensorFlow高级操作
合并与分割tf.concat([a, b], axis=0)concat:+条件:维数必须相当,且除了要合并的维度之外,其他维度的数据相等tf.splitsplit:-tf.stack([a, b], axis=0)stack:+stack:create new dim,可以增加维度(大维度)进行合并tf.unstackunstack:-数据统计tf.norm(a)范数计算:L1 Norm**tf.norm(b, or原创 2021-10-16 16:48:34 · 268 阅读 · 0 评论 -
TensorFlow基础
目录数据类型创建Tensor索引与切片(重要)维度变换(重要)Broadcasting数学运算前向传播(张量)实战各小节要点总结数据类型数据转换创建Tensor从numpy或list中转化成Tensor用tf.zeros()创建全为0的Tensor用tf.zeros_like()创建与另一个Tensor相同维数和结构的全为0的Tensor用tf.ones()创建全为1的Tensor用tf.fill([], a)来创建全为a的Tens...原创 2021-10-15 20:16:42 · 280 阅读 · 0 评论 -
激活函数与GPU加速
激活函数simplyGPU accelerated注意,在0.3版本之前是用的.cpu()或.cuda()方法,到了0.4以及1.0版本之后变成了.to(device)方法,这样的话如果想要更改cpu或gpu的使用只需要改变device中的参数即可,方便了很多,比较推荐torch.device('cuda:0')表示在第一个GPU上进行加速,如果有不同的GPU,可以使用不同的索引代表不同的GPU...原创 2021-09-14 15:21:17 · 230 阅读 · 0 评论 -
PyTorch全连接层
nn.Linearrelu?conciselyinherit from nn.Module init layer in __init__ implement forward()step 1step 2step 3nn.ReLU v.s. F.relu()class-style API 因此需要先实例化 function-style API 因此可以直接传参 Train...原创 2021-09-14 15:01:06 · 673 阅读 · 0 评论 -
多分类问题实例
Network Architecturew1, b1 = torch.randn(200, 784, requires_grad=True),\ torch.zeros(200, requires_grad=True)w2, b2 = torch.randn(200, 200, requires_grad=True),\ torch.zeros(200, requires_grad=True)w3, b3 = torch.randn(10, 200, re...原创 2021-09-14 11:19:09 · 389 阅读 · 0 评论 -
2D函数优化实例
一个简单函数的优化问题plotdef himmelblau(x): return (x[0] ** 2 + x[1] - 11) ** 2 + (x[0] + x[1] ** 2 - 7) ** 2x = np.arange(-6, 6, 0.1)y = np.arange(-6, 6, 0.1)print('x,y range:', x.shape, y.shape)X, Y = np.meshgrid(x, y)print('X,Y maps:', X.shap...原创 2021-09-14 10:16:38 · 182 阅读 · 0 评论 -
PyTorch基础操作
创建TensorImport from numpytorch.from_numpy(a)Import from Listtorch.tensor() 中仅可以给出具体的数值,也就是tensor中的数值但是 torch.FloatTensor() 中既可以给具体的数值(通过List方式给出),也可以不加 [] 而给出tensor的“dim”,比如torch.FloatTensor(3, 4),使用时最好使用后者,以便与torch.tensor()方法区分开uniniti原创 2021-09-13 22:30:48 · 528 阅读 · 0 评论 -
Auto-Encoders
原创 2021-09-13 10:54:45 · 148 阅读 · 0 评论 -
卷积神经网络CNN
原创 2021-09-11 22:09:42 · 83 阅读 · 0 评论 -
Momentum and Learning rate decay
Momentum 原理上面的是梯度下降方法的核心公式,第三个式子是加了Momentum势能的公式可以发现Momentum只是在原本公式的基础上加上了一项“上一步的向量”,也就是说在Momentum中这一步往哪边走走多少不光取决于梯度下降的计算结果,还取决于上一步的方向和大小无Momentum的普通梯度下降方法的直观理解可以看到轨迹在一开始比较散乱,而且最终也并没有找到全局最优解,只是找到了一个局部最优点有Momentum的普通梯度下降方法的直观理解可以看到加上势能这一项之后,轨.原创 2021-09-10 10:18:36 · 107 阅读 · 0 评论 -
PyTorch之MLP反向传播
Chain ruleMulti-output PerceptronMulti-Layer Perceptron原创 2021-09-07 11:14:39 · 192 阅读 · 0 评论 -
创建tensor
Import from numpyImport from List原创 2021-09-06 09:55:12 · 85 阅读 · 0 评论 -
PyTorch基本数据类型
python与PyTorch数据类型比较Type check原创 2021-09-06 09:35:24 · 63 阅读 · 0 评论 -
PyTorch学习之线性回归练习+手写数字识别初体验
线性回归练习loss = (WX + b - y)^2def compute_error_for_line_given_points(b, w, points): totalError = 0 for i in range(0, len(points)): x = points[i, 0] y = points[i, 1] totalError += (y - (w * x + b)) ** 2 return totalErr原创 2021-09-04 11:22:49 · 335 阅读 · 0 评论 -
Introduction of Generative Adversarial Network(GAN)
from 李宏毅老师人工智能课程这是一个例子,麻雀吃蝴蝶,蝴蝶进化(变了颜色),麻雀吃不到,麻雀进化,蝴蝶继续进化(形成枯叶形态),麻雀又吃不到,麻雀再次进化.........原创 2021-08-26 10:07:04 · 136 阅读 · 0 评论 -
Convolutional Neural Network——CNN
对图像进行CNN(卷积神经网络)的原因CNN的完整流程CNN——ConvolutionCNN – Colorful imageCNN – Max Pooling分成许多小部分,取每一个小部分中最大的值From 李宏毅老师深度学习课程...原创 2021-08-23 09:05:27 · 88 阅读 · 0 评论 -
Tips for Deep Learning
原创 2021-08-20 15:39:14 · 73 阅读 · 0 评论 -
Backpropagation
Backpropagation是什么在神经网络中,根据Gradient Descent 方法来计算下一步的各参数θ,每一步参数的计算参考下面这张PPTbackpropagation就是计算每个步骤中Gradient的方法复合函数求导求偏导的链式准则Backpropagation...原创 2021-08-20 15:22:14 · 124 阅读 · 0 评论 -
Deep Learning 简介
Three Steps for Deep Learning神经网络中每一层的计算4 = 1*1+(-1)*(-2)+10.98 = 1/(1+e^(-4))同理0.12也是这么来的神经网络其实就是一个函数,给一个输入向量,它会返回一个输出向量其内部可以写成矩阵的计算形式Neural NetworkGPU可以对神经网络进行加速,效果比CPU更好输出层可以作为多重分类的分类器应用举例输出这个图像表示某一数字的概率,取..原创 2021-08-19 15:44:16 · 197 阅读 · 0 评论 -
Optimization
NotationsOptimization(优化)的目的找到最合适的 θ 以便得到最小的 或者说,找到最合适的 θ 以便得到最小的 L(θ)Optimization 算法一览SGDη是学习率从θ0(=0)开始,计算该位置的梯度,根据公式计算下一步的θ参数,以此类推,逐渐接近 Loss funtion 的最小值点SGDM(SGD with Momentum)Momentum 的原因增加Momentum 之后,移动的时候不会在某点停下来(传统的S...原创 2021-08-19 10:36:29 · 488 阅读 · 0 评论