1.softmax 函数 Softmax(x) 也是一个 non-linearity, 但它的特殊之处在于它通常是网络中一次操作. 这是因为它接受了一个实数向量并返回一个概率分布.其定义如下. 定义 x 是一个实数的向量(正数或负数都无所谓, 没有限制). 然后, 第i个 Softmax(x) 的组成是 exp(xi)∑jexp(xj)exp⁡(xi)∑jexp⁡(xj) 输出是一个概率分布: 每个元素都是非负的, 并且所有元素的总和都是1.2.log_softmax 在softmax的结果上再…
(三)PyTorch学习笔记——softmax和log_softmax的区别.CrossEntropyLoss() 与 NLLLoss() 的区别.log似然代价函数 pytorch loss function 总结 NLLLoss 的 输入 是一个对数概率向量和一个目标标签(不需要是one-hot编码形式的). 它不会为我们计算对数概率. 适合网络的最后一层是log_softmax. 损失函数 nn.CrossEntropyLoss() 与 NLLLoss() 相同, 唯一的不同是它为我们去做…
全文转载自:softmax的log似然代价函数(公式求导) 在人工神经网络(ANN)中,Softmax通常被用作输出层的激活函数.这不仅是因为它的效果好,而且因为它使得ANN的输出值更易于理解.同时,softmax配合log似然代价函数,其训练效果也要比采用二次代价函数的方式好. 1. softmax函数及其求导 softmax的函数公式如下: 其中,表示第L层(通常是最后一层)第j个神经元的输入,表示第L层第j个神经元的输出,表示自然常数.注意看,表示了第L层所有神经元的输入之和. softm…
目录 Pytorch Leture 05: Linear Rregression in the Pytorch Way Logistic Regression 逻辑回归 - 二分类 Lecture07: How to make netural network wide and deep ? Lecture 08: Pytorch DataLoader Lecture 09: softmax Classifier part one part two : real problem - MNIST i…
一.梯度 导数是对某个自变量求导,得到一个标量. 偏微分是在多元函数中对某一个自变量求偏导(将其他自变量看成常数). 梯度指对所有自变量分别求偏导,然后组合成一个向量,所以梯度是向量,有方向和大小. 上左图中,箭头的长度表示陡峭度,越陡峭的地方箭头越长,箭头指向的方向是y变大的方向,如果要使用梯度下降,则需要取负方向. 右图中,蓝色代表低点,红色代表高点,中间的箭头方向从蓝色指向红色,而且中间最陡峭的地方,箭头最长. 二.梯度下降 上图中分别使用梯度下降优化θ1和θ2的值,α表示学习率,即每次按…
1.torch.nn.state_dict(): 返回一个字典,保存着module的所有状态(state). parameters和persistent_buffers都会包含在字典中,字典的key就是parameter和buffer的names. 例子: import torch from torch.autograd import Variable import torch.nn as nn class Model(nn.Module): def __init__(self): super(…
上一节中,我们使用autograd的包来定义模型并求导.本节中,我们将使用torch.nn包来构建神经网络. 一个nn.Module包含各个层和一个forward(input)方法,该方法返回output. 上图是一个简单的前馈神经网络.它接受一个输入.然后一层接着一层地传递.最后输出计算的结果. 神经网络模型的训练过程 神经网络的典型训练过程如下: 定义包含一些可学习的参数(或者叫做权重)的神经网络模型. 在数据集上迭代. 通过神经网络处理输入. 计算损失函数(输出结果和正确值的差值大小).…
记录如何用Pytorch搭建LeNet-5,大体步骤包括:网络的搭建->前向传播->定义Loss和Optimizer->训练 # -*- coding: utf-8 -*- # All codes and comments from <<深度学习框架Pytorch入门与实践>> # Code url : https://github.com/zhouzhoujack/pytorch-book # lesson_2 : Neural network of PT(Py…
书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and comments from <<深度学习框架Pytorch入门与实践>> # Code url : https://github.com/zhouzhoujack/pytorch-book # lesson_1 : Basic code syntax of PT(Pytorch) im…
原文地址:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 什么是pytorch? pytorch是一个基于python语言的的科学计算包,主要分为两种受众: 能够使用GPU运算取代NumPy 提供最大灵活度和速度的深度学习研究平台 开始 Tensors Tensors与numpy的ndarray相似,且Tensors能使用GPU进行加速计算. 创建5 * 3的未初始化矩阵: 创建并随机初始化矩阵: 创建一…
一.对Tensor的操作 从接口的角度讲,对Tensor的操作可以分为两类: (1)torch.function (2)tensor.function 比如torch.sum(a, b)实际上和a.sum(b)功能等价. 从存储的角度讲,对Tensor的操作也可以分为两类: (1)不修改自身数据,如a.add(b),加法结果返回一个新的tensor: (2)修改自身数据,如a.add_(b),加法结果仍存在a中,a被改变. 函数名以_结尾的称为inplace方式. 二.Tensor的创建 常见的…
一.Tensor Tensor是Pytorch中重要的数据结构,可以认为是一个高维数组.Tensor可以是一个标量.一维数组(向量).二维数组(矩阵)或者高维数组等.Tensor和numpy的ndarrays相似. import torch as t 构建矩阵:x = t.Tensor(m, n) 注意这种情况下只分配了空间,并没有初始化. 使用[0,1]均匀分布随机初始化矩阵:x = t.rand(m, n) 查看x的形状:x.size() 加法: (1)x + y (2)t.add(x, y…
1. **args, **kwargs的区别 def build_vocab(self, *args, **kwargs): counter = Counter() sources = [] for arg in args: if isinstance(arg, Dataset): sources += [getattr(arg, name) for name, field in arg.fields.items() if field is self] else: sources.append(…
import torch import torch.nn as nn from torch.autograd import Variable import torch.nn.functional as F import torch.optim as optim CONTEXT_SIZE = 2 # the same as window_size EMBEDDING_DIM = 10 test_sentence = "When forty winters shall besiege thy bro…
.简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子,而tensor是鸡蛋,鸡蛋应该放在篮子里才能方便拿走(定义variable时一个参数就是tensor) Variable这个篮子里除了装了tensor外还有requires_grad参数,表示是否需要对其求导,默认为False Variable这个篮子呢,自身有一些属性 比如grad,梯度varia…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/linear_regression.py 张量的操作 拼接 torch.cat() torch.cat(tensors, dim=0, out=None) 功能:将张量按照 dim 维度进行拼接 tensors: 张量序列 dim: 要拼接的维度 代码示例: t = torch.ones((2, 3)) t_0 = torch.cat([t, t], d…
PyTorch 的诞生 2017 年 1 月,FAIR(Facebook AI Research)发布了 PyTorch.PyTorch 是在 Torch 基础上用 python 语言重新打造的一款深度学习框架.Torch 是采用 Lua 语言为接口的机器学习框架,但是因为 Lua 语言较为小众,导致 Torch 学习成本高,因此知名度不高. PyTorch 的发展 2017 年 1 月正式发布 PyTorch. 2018 年 4 月更新 0.4.0 版,支持 Windows 系统,caffe2…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/computational_graph.py 计算图 深度学习就是对张量进行一系列的操作,随着操作种类和数量的增多,会出现各种值得思考的问题.比如多个操作之间是否可以并行,如何协同底层的不同设备,如何避免冗余的操作,以实现最高效的计算效率,同时避免一些 bug.因此产生了计算图 (Computational Graph). 计算图是用来描述运算的有向无环…
PyTorch 的数据增强 我们在安装PyTorch时,还安装了torchvision,这是一个计算机视觉工具包.有 3 个主要的模块: torchvision.transforms: 里面包括常用的图像预处理方法 torchvision.datasets: 里面包括常用数据集如 mnist.CIFAR-10.Image-Net 等 torchvision.models: 里面包括常用的预训练好的模型,如 AlexNet.VGG.ResNet.GoogleNet 等 深度学习模型是由数据驱动的,…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 PyTorch 中网络模型的创建步骤.网络模型的内容如下,包括模型创建和权值初始化,这些内容都在nn.Module中有实现. 网络模型的创建步骤 创建模型有 2 个要素:构建子模块和拼接子模块.如 LeNet 里包含很多卷积层.池化层.全连接层,当我们构建好所有的子模块之后,按照一定的顺序拼接起来…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_others.py 这篇文章主要介绍了 PyTorch 中的池化层.线性层和激活函数层. 池化层 池化的作用则体现在降采样:保留显著特征.降低特征维度,增大 kernel 的感受野. 另外一点值得注意:pooling 也可以提供一些旋转不变性. 池化层可对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度并在一定程度上避…
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/optimizer_methods.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/momentum.py 这篇文章主要介绍了 PyTorch 中的优化器,包括 3 个部分:优化器的概念.optimizer 的属性.optimizer 的方法. 优化器的概念 P…
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/bn_and_initialize.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/bn_in_123_dim.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/norma…
1.优化器算法简述 首先来看一下梯度下降最常见的三种变形 BGD,SGD,MBGD,这三种形式的区别就是取决于我们用多少数据来计算目标函数的梯度,这样的话自然就涉及到一个 trade-off,即参数更新的准确率和运行时间. 2.Batch Gradient Descent (BGD) 梯度更新规则: BGD 采用整个训练集的数据来计算 cost function 对参数的梯度:   缺点: 由于这种方法是在一次更新中,就对整个数据集计算梯度,所以计算起来非常慢,遇到很大量的数据集也会非常棘手,而…
以下是我从Google上找到的一个例子,非常生动形象,我修改了部分代码,具体内容如下: 对于$root 与$parent的区别: $root refers to the view model applied to the DOM with ko.applyBindings; 译:$root 是指ViewModel所应用于ko.applyBindings时所使用的DOM; $parent refers to the immediate outer scope;  译:$parent 是指当前DOM…
1.方式1: LinearLayout layout = new LinearLayout(this); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); TextView textView = new TextView(this); String html = "有问题:\n"; html +=&…
英文原文链接:http://cs231n.github.io/python-numpy-tutorial/ Numpy Numpy是Python中科学计算的核心库.它提供了一个高性能的多维数组对象,以及处理这些数组的工具.如果您已经熟悉MATLAB,那么在开始学习Numpy时,您可能会发现本教程非常有用. Arrays numpy数组是由所有类型相同的值组成的网格,由非负整数的元组索引.维数为数组的秩;数组的形状是一个整数元组,给出了数组在每个维度上的大小. 我们可以从嵌套的Python列表初始…
在使用ftp传输文件时,常添加上一句: binary  -- 使用二进制模式传输文件 遂查资料,如下所获. FTP可用多种格式传输文件,通常由系统决定,大多数Linux/UNIX系统只有两种模式:文本模式和二进制模式. 文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式. 一般来说: 如果你用错误的模式传输你的图片,你将可能无法看到图片,看到的会是乱码. 如果…
项目结构区别 传统的maven构建的项目结构如下: 用maven构建的采用springboot项目结构如下: 二者结构一致,区别如下:传统项目如果需要打成war包,需要在WEB-INF目录结构配置web.xml文件:springboot则不需要 启动方式区别 传统web项目启动方式:在eclipse的tomcat插件中导入项目,然后启动tomcat,项目也启动了.或者将项目打成war包,放入tomcat中,启动tomcat 采用springboot项目启动:如下图所示,打开HelloWorldA…
官网的英文解释: javascript和jQuery有点关系,js是一种脚本语言,主要用于客户端,现在主要用于实现一些网页效果. jquery是js的一个库,你可以认为是对js的补充,提供了很多方便易用的方法,兼容性也好很多,个人更喜欢用jquery. AJAX全名是Asynchronous Javascript And XML,意思是异步JavaScript和XML.是一种创建交互式网页的技术.简单点说就是能不通过后台在网站前台进行数据库操作了. json(JavaScript Object…