Pytorch7深度学习计算
深度学习计算块和层对于多层感知机而言,整个模型及其组成层都是这种架构。 整个模型接受原始输入(特征),生成输出(预测), 并包含一些参数(所有组成层的参数集合)。 同样,每个单独的层接收输入(由前一层提供), 生成输出(到下一层的输入),并且具有一组可调参数, 这些参数根据从下一层反向传播的信号进行更新。
事实证明,研究讨论“比单个层大”但“比整个模型小”的组件更有价值。 例如,在计算机视觉中广泛流行的ResNet-152架构就有数百层, 这些层是由层组(groups of layers)的重复模式组成。 这个ResNet架构赢得了2015年ImageNet和COCO计算机视觉比赛 的识别和检测任务 (He et al., 2016)。 目前ResNet架构仍然是许多视觉任务的首选架构。 在其他的领域,如自然语言处理和语音, 层组以各种重复模式排列的类似架构现在也是普遍存在。
为了实现这些复杂的网络,我们引入了神经网络块的概念。 块(block)可以描述单个层、由多个层组成的组件或整个模型本身。 使用块进行抽象的一个好处是可以将一些块组合成更大的组件, 这一过程通常是递归的,如下图所示 ...
Java基础学习
这个博客是我整理的 Java 基础知识的学习笔记(并不是我原创的,我也没实力原创,仅供自己和大家学习),内容包括:Java 数据类型、Java 关键字、Java的三大特性、Java 中的 String、StringBuffer 和 StringBuilder、Java 反射、Java 异常、Java IO 流、Java 注解、Java 泛型、Java 枚举、Java 8 新特性、Java 常见的集合框架源码解析。
1. Java 数据类型详解Java 数据类型有很多,本文主要从基本类型、包装类型、引用类型和缓存池四个方面来总结。
1.1 基本数据类型基本数据类型有 byte、short、int、long、float、double、boolean、char,关于它们的分类,我画了个图。
接下来我主要从字节数、数据范围、默认值、以及用途等方面给大家总结成一个表格,一目了然。
数据类 型字节数位 数最小值最大值默认 值用途byte18-1281270byte 类型用在大型数组中节约空 间,主要代替整数。因为 byte 变 量占用的空间只有 int 类型的四分 之一short216-3276 ...
C++图学习整理
C++图学习整理最小生成树在无向图中生成一棵树(n-1条边,无环,连通所有点),且这棵树的劝和最小
普利姆算法(Prim)——加点法
任选一点开始,找到离这个点最近的点,加入最小生成树
再继续去找离这个最小生成树最近的点,加入最小生成树中,重复步骤2
克鲁斯卡尔算法(Kruskal) ——加边法
找到最短边,判断其两个端点在不在一个连通分量里
若在,则跳过;若不在,加入最小生成树
洛谷例题题目描述如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。
输入格式第一行包含两个整数 $N,M$,表示该图共有 $N$ 个结点和 $M$ 条无向边。
接下来 $M$ 行每行包含三个整数 $X_i,Y_i,Z_i$,表示有一条长度为 $Z_i$ 的无向边连接结点 $X_i,Y_i$。
输出格式如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如果该图不连通则输出 orz。
样例 #1样例输入 #11234564 51 2 21 3 21 4 32 3 43 4 3
样例输出 #117
提示数据规模:
对于 $20%$ 的数据,$N\le 5$,$M\le 20 ...
Pytorch6多层感知机
多层感知机隐藏层在多层感知机(Multilayer Perceptron, MLP)中,隐藏层(Hidden Layer)是指位于输入层和输出层之间的神经元层。多层感知机是一种前馈神经网络,通常由多个隐藏层组成,每个隐藏层由多个神经元组成。
隐藏层的作用是对输入数据进行非线性映射和特征提取,使得神经网络能够学习到复杂的模式和关系。每个隐藏层中的每个神经元接收来自上一层(或者输入层)的输入,通过加权和和激活函数处理后输出给下一层(或者输出层)。
具体来说,多层感知机的运作过程如下:
输入层接收原始数据或特征向量作为输入。
隐藏层接收来自输入层的输入,对其进行线性加权和,并通过一个非线性的激活函数(如ReLU、sigmoid等)进行转换,输出给下一层或输出层。
输出层接收最后一个隐藏层的输出,进行最终的处理和分类,输出预测结果。
隐藏层的引入使得多层感知机能够处理复杂的非线性问题,并且通过调整隐藏层的神经元数量和结构,可以增加神经网络的表达能力,提高其对数据的建模能力和预测精度。
线性模型可能会出错例如,线性意味着单调假设: 任何特征的增大都会导致模型输出的增大(如果对应的权重为正), ...
git详解
git详解基础配置a.首次使用添加身份说明,使用以下两个命令:
1git config --global user.name "你的昵称"git config --global user.email 邮箱@example.com
b.创建仓库
①在项目文件夹下使用git bash输入
1git init
②使用他人项目创建仓库
1git clone 项目url
状态与提交版本创建完一个仓库后,会赋予这个仓库每一个文件或目录一个状态
如果是自己创建的,状态均为:未被跟踪
当生成一个版本后,未被跟踪的文件就不会在这个版本里
那么他之前的状态便无法追踪
现在我们可以单独地跟踪一个文件或目录
1git add <name> //去跟踪一个文件或目录
若一个文件被跟踪,则在这个仓库里会一直被跟踪
解除跟踪:
1git rm <name> //解除跟踪
或者:
1git rm --cache <name> //解除跟踪且保留在目录中
接下来就可以对跟踪的文件就行修改,修改完后,将它的状态设置为缓存状态
...
Pytorch5线性神经网络
Pytorch learning notes5 –线性神经网络线性回归回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域,回归经常用来表示输入和输出之间的关系。
在机器学习领域中的大多数任务通常都与预测(prediction)有关。
线性回归的基本元素 线性回归基于几个简单的假设: 首先,假设自变量𝑥和因变量𝑦之间的关系是线性的, 即𝑦可以表示为𝑥中元素的加权和,这里通常允许包含观测值的一些噪声; 其次,我们假设任何噪声都比较正常,如噪声遵循正态分布。
为了解释线性回归,我们举一个实际的例子: 我们希望根据房屋的面积(平方英尺)和房龄(年)来估算房屋价格(美元)。 为了开发一个能预测房价的模型,我们需要收集一个真实的数据集。 这个数据集包括了房屋的销售价格、面积和房龄。 在机器学习的术语中,该数据集称为训练数据集(training data set) 或训练集(training set)。 每行数据(比如一次房屋交易相对应的数据)称为样本(sample), 也可以称为数据点(data point)或数据样本(data i ...
Pytorch4文档查阅
Pytorch learning notes4 –文档查阅——–提供了一些查看PyTorch API的指导。
查找模块中的所有函数和类为了知道模块中可以调用哪些函数和类,可以调用dir函数。 例如,我们可以查询随机数生成模块中的所有属性:
123import torchprint(dir(torch.distributions))
通常可以忽略以“__”(双下划线)开始和结束的函数,它们是Python中的特殊对象, 或以单个“_”(单下划线)开始的函数,它们通常是内部函数。 根据剩余的函数名或属性名,我们可能会猜测这个模块提供了各种生成随机数的方法, 包括从均匀分布(uniform)、正态分布(normal)和多项分布(multinomial)中采样。
查找特定函数和类的用法1help(torch.ones)
123456789101112131415161718192021222324252627282930313233Help on built-in function ones in module torch:ones(...) ones(*size, *, out=No ...
Pytorch3自动微分
Pytorch learning notes3 –自动微分求导是几乎所有深度学习优化算法的关键步骤。 虽然求导的计算很简单,只需要一些基本的微积分。 但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。
深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。 实际中,根据设计好的模型,系统会构建一个计算图(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。 自动微分使系统能够随后反向传播梯度。 这里,反向传播(backpropagate)意味着跟踪整个计算图,填充关于每个参数的偏导数。
A simple example1234import torchx = torch.arange(4.0)x
1tensor([0., 1., 2., 3.])
在我们计算𝑦关于𝑥的梯度之前,需要一个地方来存储梯度。 重要的是,我们不会在每次对一个参数求导时都分配新的内存。 因为我们经常会成千上万次地更新相同的参数,每次都分配新的内存可能很快就会将内存耗尽。 注意,一个标量函数关于向 ...
Pytorch2微积分实现
Pytorch learning notes2 –微积分实现为了更好地在python中实现导数,让我们做一个实验。 定义𝑢=𝑓(𝑥)=3𝑥2−4𝑥如下:
123456%matplotlib inline # Jupyter中使用的魔法命令(Magic Command)。在单元格内直接显示 Matplotlib 生成的图形import numpy as npimport matplotlib.pyplot as pltfrom d2l import torch as d2ldef f(x): return 3 * x ** 2 - 4 * x
通过令𝑥=1并让ℎ接近0,[𝑓(𝑥+ℎ)−𝑓(𝑥)]/ℎ的数值结果接近2。 虽然这个实验不是一个数学证明,但稍后会看到,当𝑥=1时,导数𝑢′是2。
1234567def numerical_lim(f, x, h): return (f(x + h) - f(x)) / hh = 0.1for i in range(5): print( ...
C++容器常用方法汇总
C++容器常用方法汇总——陆熠鹏一. Vector1. 定义·1234//创建一个空vectorvevtor<int> vec;//指定元素个数,且值均为tvector<int> vec(int sive, int t);
2. 增1234//向向量尾部增加一个元素xvec.push_back(const T& x);//向量中迭代器指向元素前增加一个元素vec.insert(inerator it,const T& x);
迭代器使用example:
123456vector<int> vv={1,2,3,4,5}; for(vector<int>::iterator it=vv.begin();it!=vv.end();it++) { cout<<*it<<" "; } cout<<endl;
3. 删1234567//删除向量尾部最后一个元素vec.pop_back( ...