- 博客(37)
- 收藏
- 关注
原创 多层感知机
参数的改变会影响生成数列的步长和元素的数量,可以根据需要调整这个参数来生成不同间隔的数列。张量,不会再追踪其上的操作,也不会记录在计算图中。报错d2l中没有train_ch3函数 我手动加了进去,3.6章节的。具有相同的数据,但不再与计算图相关联。的值,将会影响生成的数列中元素的个数和间隔。有点问题,不显示图像,别人也与这样的问题,好像是w。的计算图,也就是将张量从计算图中分离出来。共享数据的新张量,但是不会保留。返回一个新的张量,该张量与。会创建一个张量,包含从。多层感知机从零开始实现。
2023-11-29 21:32:53
748
原创 softmax回归的从零开始实现
在实现softmax回归模型之前,我们简要回顾一下sum运算符如何沿着张量中的特定维度工作。如2.3.6节和2.3.6.1节所述, 给定一个矩阵X,我们可以对所有元素求和(默认情况下)。也可以只求同一个轴上的元素,即同一列(轴0)或同一行(轴1)。如果X是一个形状为(2, 3)的张量,我们对列进行求和, 则结果将是一个具有形状(3,)的向量。当调用sum运算符时,我们可以指定保持在原始张量的轴数,而不折叠求和的维度。这将产生一个具有形状(1, 3)的二维张量。[15.]]))
2023-11-15 00:40:20
70
原创 线性回归训练
现在我们已经准备好了模型训练所有需要的要素,可以实现主要的训练过程部分了。理解这段代码至关重要,因为从事深度学习后, 相同的训练过程几乎一遍又一遍地出现。在每次迭代中,我们读取一小批量训练样本,并通过我们的模型来获得一组预测。计算完损失后,我们开始反向传播,存储每个参数的梯度。都是超参数,分别设为3和0.03。设置超参数很棘手,需要通过反复试验进行调整。我们现在忽略这些细节,以后会在。函数遍历整个数据集, 并将训练数据集中所有样本都使用一次(假设样本数能够被批量大小整除)。(epoch)中,我们使用。
2023-11-12 17:58:50
81
原创 强化学习--奖励函数
强化学习的标准交互过程如下:每个时刻,智能体根据根据其策略(policy),在当前所处状态(state)选择一个动作(action)对这些动作做出相应的相应的响应,转移到新状态,同时产生一个,这通常是一个数值,奖励的折扣累加和称为,是智能体在动作选择过程中想要最大化的目标强化学习交互图在这个过程中,。可以把这种想法非正式地表述为 “收益假设”智能体所有的 “目标” 或 “目的” 都可以归结为:最大化智能体收到的标量奖励信号的累计和(称之为“收益”)的概率期望值 —— Richard S.Sutton。
2023-11-09 22:31:39
3205
原创 矢量化加速
为了说明矢量化为什么如此重要,我们考虑对向量相加的两种方法。在一种方法中,我们将使用Python的for循环遍历向量;在另一种方法中,我们将依赖对。在训练我们的模型时,我们经常希望能够同时处理整个小批量的样本。为了实现这一点,需要我们对计算进行矢量化, 从而利用线性代数库,而不是在Python中编写开销高昂的for循环。另外,我们将更多的数学运算放到库中,而无须自己编写那么多的计算,从而减少了出错的可能性。首先,我们使用for循环,每次执行一位的加法。运算符来计算按元素的和。或者,我们使用重载的。
2023-11-08 00:12:45
279
原创 【数据处理】
还可以通过提供保函数值的python列表(或嵌套列表),来为张量赋值,外侧列表对应轴0,内侧列表对应轴1。张量中元素可以通过索引来访问,第一个元素索引为0,最后一个索引为-1,【1:3】是选择第二个和第三个元素。一个形状为(3 ,4)的张量,其中每个元素从均值为0,标准差为1的标准高斯分布(正态分布)中随机采样。为多个元素赋予相同的值,【0:2,:】表示访问第一行和第二行,其中:表示沿轴1(列)的所有元素。创建一个形状为(2,3,4)的张量,所有元素设置为1。dim轴为0是按行,轴为1是按列。
2023-11-05 21:07:57
179
原创 C++友元
在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去。生活中你的家有客厅(Public),有你的卧室(Private)友元的目的就是让一个函数或者类 访问另一个类中私有成员。但是呢,你也可以允许你的好闺蜜好基友进去。友元的关键字为 ==friend==
2023-11-03 11:24:36
55
原创 深拷贝与浅拷贝
总结:如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题。深浅拷贝是面试经典问题,也是常见的一个坑。深拷贝:在堆区重新申请空间,进行拷贝操作。浅拷贝:简单的赋值拷贝操作。
2023-11-01 23:03:24
84
1
原创 【torchvision中数据集的使用】
如果下载的慢,可以将链接放置到迅雷下载,然后粘贴到目标文件夹。dataloader在search中寻找。代码:从pytorch中下载数据集。
2023-10-30 22:29:29
62
原创 常见的Transforms
输入 *PIL *Image.open()*输出 *tensor *ToTensor()*作用 *narrays *cv.imread()这里出了一个问题,一开始数值太大剪裁不开。可以把之前的日志文件删掉,否则可能影响。结果:步数不同,可以看到不同的结果。还有一些方法 可以看源码。结果:大小发生了变化。结果:图片发生了变换。
2023-10-27 23:57:31
68
原创 Transforms的使用
transforms像一个工具箱,里面有不同的class,相当于不同的作用,例如把数据转换为totensor或者resize。它把一些特定格式的图片经过挑选的工具,输出一个想要的图片的结果。一开始:不知道为啥启动没有照片 换端口并清除了下缓存才ok。
2023-10-27 00:25:57
271
原创 【C++引用】
总结:通过引用参数产生的效果同按地址传递是一样的。引用的语法更清楚简单。在函数形参列表中,可以加==const修饰形参==,防止形参改变实参。函数传参时,可以利用引用的技术让形参修饰实参。作用:引用是可以作为函数的返回值存在的。常量引用主要用来修饰形参,防止误操作。引用在初始化后,不可以改变。用法:函数调用作为左值。可以简化指针修改实参。
2023-10-26 21:28:21
234
原创 【TensorBoard的使用】
遇到问题:pip tensorboard失败 后来换了个环境成功,但是没法使用,再pip transform后才使用成功。
2023-10-23 16:49:40
119
3
原创 C++结构体做参数及const使用环境
总结:如果不想修改主函数中的数据,用值传递,反之用地址传递。将结构体作为参数向函数中传递。用const来防止误操作。
2023-10-21 23:44:14
150
2
原创 PyTorch中的一些数据操作
在深度学习中,我们会频繁的对数据进行操作。这是我们在写代码最基本、入门的一个操作。首先导入torch包弄懂张量、数组、向量、矩阵中的一些基本概念表⽰由⼀个数值组成的,这个数组可能有多个维度。具有⼀个轴的张量对应数学上的( vector )。具有两个轴的张量对应数学上的(matrix )。
2023-10-16 01:30:26
314
3
原创 C++ IO流
int month;int day;return os;return is;*/Date d3;Date d4;return 0;三、stringstream流在程序中如果想要使用stringstream,必须要包含头文件<sstream>。
2023-10-13 00:30:28
58
1
原创 C++三大特性-例程
被继承的类称为;新产生的类称为;继承时会有基类的属性;派生类无法访问基类的私有成员;不论继承权限如何,派生类总能访问对象的public与protected成员;如在派生类内创建基类对象,则只可访问其public成员public继承反应了现实中 “” 的关系派生类对象构建时先构建其基类-产生对象时,派生类含有隐藏基类对象继承权限:中的为继承权限子类继承的父类成员在自身类内不能高于“继承权限”子类的构造函数优先构造父类再构造子类执行子类的析构函数时优先析构子类再析构父类。
2023-10-11 02:24:09
61
3
原创 C++面向对象
2.1 面向对象对象即是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现类 class :是一组相关的属性(变量)与行为(方法)的集合,是一个抽象概念设计的产物。c++中,类是一种数据类型成员变量是对象的属性,属性的值确定对象的状态。成员函数是对象的方法,确定对象的行为。面向对象三大特性:封装 继承 多态 (抽象)如成员可见性不进行设置,默认为privateprivate与protected体现了类具有封装性一般将变量设置为private,方法设置为public;
2023-10-09 15:16:19
94
1
原创 C++笔记《与C的区别》
b. inline只是对系统建议将该函数处理为内联函数,在函数体过大(如行数大于5)或过于复杂(存在循环结构,if语句等)时,编译器会将其视为普通函数处理;在C工程中添加实现的C++文件,写C++函数作为中间层,用中间层调用需要的C++函数,需要自实现的C++函数产生C语言符号,之后使用C语言调用。常量的初始化必须使用常量, 如果使用变量给const修饰的量初始化,则该量(const )会退化成常变量;(在c++编译规则中)在原来的认识中,被const修饰的量其值不可被更改,我们称这样不可被修改的量为。
2023-10-08 19:45:06
67
3
原创 C++三大特性
面向对象语言的三特特性:封装、继承、多态。作为面向对象编程语言的代表C++,本文简单总结C++的三大特性。C++的三大特性为:继承,多态,封装封装可以隐藏实现细节,使得代码模块化,继承可以扩展已存在的模块,它们目的都是为了: 代码重用。而多态是为了实现另一个目的: 接口重用。(1)继承。一个对象直接使用另一个对象的属性和方法。定义:继承就是新类从已有类那里得到已有的特性。类的派生指的是从已有类产生新类的过程。原有的类成为基类或父类,产生的新类称为派生类或子类,
2023-09-22 15:36:36
857
2
原创 【pytorch】
所以对虚拟环境进行创建、删除等操作需要使用conda命令。使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。网址: https://pytorch.org/get-started/locally/。conda env list 或 conda info -e:查看当前存在哪些虚拟环境。conda update conda:检查更新当前conda。conda list:查看安装了哪些包。使用命令conda env list。
2023-09-19 19:55:29
58
原创 【conda安装】基于基于miniconda和Windows
Conda是一个在Windows、macOS、Linux和z/OS上运行的开源软件包管理系统和环境管理系统。Conda快速安装、运行和更新软件包及其依赖项。Conda可以在本地计算机上轻松创建、保存、加载和切换环境。它是为Python程序创建的,但它可以为任何语言打包和分发软件。
2023-09-18 23:42:12
336
原创 vscode连接github
在使用git时,经常会碰到这个错误:fatal: unable to access 'https://github.com/.../.git':Recv failure Connection was reset。结合我个人最近的使用经验,提供两个方法,亲测有效。当时这样还是不行 后来清理了一下dns缓存。
2023-09-16 17:51:58
383
1
原创 【C++基础补充】 重点知识
(文本替换)define 是宏定义,程序在预处理阶段将用define定义的内容进行替换。程序在运行时,常量表中并没有用define定义的常量,系统不会为它分配内存#define定义一个标识符来表示一个常量。特点:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了宏展开是在预处理阶段完成的,这个阶段把替换文本只看做一个字符串,并不会有任何的计算发生。宏其实就是简单的文本替换。#define 标识符 常量 //注意,最后没有分量。
2023-09-14 23:59:23
109
1
原创 卷积神经网络基础补充
2.针对二分类问题,一般采用sigmoid输出,每一个输出节点之间互不相干,即每一个输出不会满足任何一种分布规律。对于二分类问题,理论上使用sigmoid和softmax没有区别,因为数学表达式的形式是一样的。1.针对多类问题,一般采用softmax输出,所有输出节点满足概率和为1的分布规律,大部分使用。若输出包含人类、男人等等,它的输出不满足概率分布,需要使用二分类问题进行处理。中间节点的输出以及下面节点的输出,b1为偏置(此案例没有使用激活函数)若猫和狗的分类,得到的输出是唯一的(不是狗就是猫)
2023-09-13 23:00:00
77
1
原创 【深度学习】卷积神经网络
卷积核的深度要和输入特征矩阵一致(这里的深度指的是channel,即通道数),都是三维的,最终卷积得到的矩阵是由三通道的输入特征矩阵和三通道的卷积核分别对应卷积,再对应相加后得到一个卷积矩阵。:一个滑动窗口在特征图上进行滑动,并计算(将卷积核上的值与特征图上的值对应相乘,再进行相加,就得到最后矩阵中的一个值,每滑动一步计算一个值,最终得到卷积结果)3、将所得到的5*5的矩阵按行进行展开,并将其拼接成一个行向量(1行25列),这样就可以把这个行向量当成输入神经网络的输入层。4、输入层有了之后,再看输出层。
2023-09-12 22:36:01
373
原创 [C++]基础 黑马程序员教程笔记
所谓数组,就是一个集合,里面存放了相同类型的数据元素**特点1:**数组中的每个数据元素都是相同的数据类型**特点2:**数组是由连续的内存位置组成的数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式//数据类型 数组名[元素个数] = {值1,值2 ,值3 ...};
2023-09-11 22:26:09
162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人