- 博客(37)
- 收藏
- 关注
原创 逻辑回归(Logistic Regression,LR)
可以把乘法变为加法,得到对数似然函数。所以可以用对数似然函数构造损失函数,然后采用梯度下降法求解。分类——找到一条线可以将不同类别区分开。,估计出得出目前结果的最大可能性。怎样求解,在不改变函数单调性的。是机器学习的两个主要问题。其中o为需要求的参数。
2024-07-18 17:30:53
396
原创 分类损失函数 (一) torch.nn.CrossEntropyLoss()
索引:torch.tensor([0,1, 1, 3], dtype=torch.long)其中target标签可以是:列表:torch.tensor([[1, 0, 0, 0],其中logits预测值是网络输出:[[0.8, 0.5, 0.2, 0.5],y:真是标签的概率分布,y':模型预测的概率分布。
2024-07-17 13:27:19
614
原创 python - list-append和extend的区别
在列表的末尾添加一个新的对象,使用append()时是将整个对象作为一个整体添加到列表的最后一个元素。通常原地修改list。在列表的末尾一次可以添加多个元素,若添加的对象是一个列表或其他可迭代对象,这些对象中的每个元素将依次被添加到原始列表的末尾。Python中,append和extend都是用于修改列表的。
2024-07-10 10:11:13
278
原创 Pytorch.contiguous().view()
因为tensor并不是占用一整块内存,而是由不同的数据块组成,而tensor的view()操作依赖的内存是整块的,这是只需执行contiguous()这个函数,把tensor变成在内存中连续分布的形式。contiguous:view只能用在contiguous的variable上。view()相当于numpy的reshape()。
2024-05-11 10:04:14
133
原创 深度学习——循环神经网络(RNN,LSTM)
卷积神经网络的卷积核在整个特征图上滑动处理,不断进行特征数计算,因此一个特征图共享一个卷积核,不像全连接神经网络,每个输入都有自己的权重,这样会让计算机的计算量大大的提升,也容易导致网络模型过拟合,从而模型的泛化能力不强。循环神经网络模型中的权重W,U,V是一样的,意味着这些权重在每个时刻是共享的,这样循环神经网络的参数要少很多,因此神经网络的参数更新的计算量要少很多,大大减少计算机的计算量。由于误差对参数的导数是累加的,所以比较近的梯度是一致存在的,占主导地位,模型就无法建立远距离的依赖性。
2023-11-14 17:45:58
219
原创 深度学习——全连接神经网络
1、首先根据链式求导获得离误差最近的参数 w21 w22 b2。Tanh函数:(e^z - e^-z)/ e^z + e^-z。2、再计算距离误差较远的参数 w11 w12 b1。优点:解决了sigmoid输出值非0 对称。输入层 --> 隐藏层 --> 输出层。优点:解决 了ReLU的神经元死亡问题。缺点:反向传播容易造成梯度消失。缺点:正负输入的预测关系不一致。缺点:反向传播造成梯度消失。优点:解决了梯度消失问题。缺点:可能出现神经元死亡。Leaky ReLU函数。
2023-11-13 17:01:00
203
原创 深度学习——逻辑回归
逻辑回归是用来解决二分类问题:逻辑回归是用回归的方法解决分类问题,逻辑回归的输出是0-1,之间的连续,人为设定一个阈值使输出的值映射为一个类别。加法运算比乘法运算简单,所以对损失函数两边进行log,使乘法运算变为加法,同时将求最大转化为求最小,再对损失函数求梯度,进行对参数的更新。根据w,b使得样本预测全部正确的概率最大,所以将所有样本预测正确的概率相乘得到的数值是最大的,即逻辑回归的损失函数。J(w,b)=−1/ m*l(w,b)----------------------------交叉熵损失函数。
2023-11-13 14:26:34
83
原创 深度学习——线性回归和梯度下降
怎样学习:就是希望模型输出的结果与真实结果无限逼近,就是确定一个w使得输出结果和真实的结果差值越小越好,最好为0。在利用梯度下降法求解的时候,梯度更新的步伐不能太大 ,也不能太小,一般常用的为0.01或者0.001。损失函数为可微的,可微函数中的微分就是这个函数的梯度,而。有什么方法可以获得最优的w呢,显然是有的梯度下降法。晚上下山法,找到一个最陡峭的方向一步一步逐渐下山。:就是要学习一个最优的w来表示输入和输出的关系。这样使得均方误差最小的w就是最优的w。,梯度的方向就是函数上升最快的方向,
2023-11-10 16:35:08
59
原创 pytorch学习
主页 - PyTorch中文文档torch — PyTorch 2.1 documentationPytorch入门+实战系列二:Pytorch基础理论和简单的神经网络实现-优快云博客
2023-10-11 18:51:33
62
原创 c++指针和引用的区别
3、引用自初始化一个实体之后,不能在引用其他实体,因为本质是常量指针,无法改变指向。指针可以在任何时候指向任何一个同类型实体。大小为(32位,4个字节,64位,占8个字节),5、访问实体方式不同,
2023-08-29 15:35:46
36
原创 c++ 编译的四个过程
目标文件不能直接而执行,,因为某个.cpp文件调用另外一个.cpp文件,为了解决这类问题,调用目标文件与被调用的目标文件连接起来,最终得到可执行程序exe。链接一般分为静态链接和动态链接。将汇编代码解释为二进制的cpu指令,生成以o为结尾的可重定向目标文件;检查语法错误,若没有错误将代码解释为汇编,生成以s为结尾的汇编文件;引入头文件、宏替换、删除注释,生成以i为结尾的。
2023-08-25 14:21:45
1263
原创 c++位运算符
计算机中,运算是使用的二进制补码,正数的补码是它本身,负数的补码,符号位不变,其余按位取反,最后再加1。15 :原码——00001111 补码——00001111。-15:原码——10001111 补码——11110001。根据交换律:b =b^(a^b)=b^b^a=0^a=a;
2023-08-25 14:10:05
436
原创 c++ define 和 const的区别
内存:在代码区,不分配内存,使用多少次就进行多少次的拷贝,消耗内存大。内存:在静态存储区分配空间,在程序过程中内存只拷贝一次。可以防止头文件重复引用。define:宏定义,在预编译阶段进行处理。const:在编译期间进行处理。
2023-08-23 15:35:48
64
原创 c++ 中函数的指针参数传递和引用参数传递
被调函数的形式参数作为局部变量在栈中开辟了内存空间,存放的是由主函数传过来的实参变量的地址。被调函数对形参的任何操作都被处理为间接寻址,即通过占中存放的地址访问主调函数中实参变量,被调函数对形参的任何操作都会影响主调函数的实参变量。值传递的过程中,被调函数的形参作为被调函数的局部变量,在栈区开辟内存空间以存放由主调函数传递过来的实参值,从而形成一个实参的副本。引用传递和指针传递的相同点和不同点:都是在被调函数空间上一个局部变量,对于任何参数的处理都会通过一个间接寻址的方式操作到主调函数的相关变量。
2023-08-22 18:43:13
230
原创 c++ 中内存分配情况
由程序员管理,需要手动创建(new/malloc)和释放(delete []),若没有释放会造成内存泄漏,频繁的创建和释放会出现空闲碎片的情况,创建是由小到大。:由编译器创建和回收,存放局部变量和函数参数,创建是由大到小。分为初始化和未初始化的两个相邻区,存储全局变量或静态变量。存储常量(由const或#define定义的)。:存放程序的二进制代码。
2023-08-22 16:11:35
56
原创 股票交易最大利润
以第二个数作为交易的开始,求第二个数后的最大值作为交易结束,获得这次交易的最大利。将第一个数作为交易的开始,求剩下的最大值作为交易结束,获得本次交易最大利润;根据所有的交易利润,求得最大利润。股票只可进行一次交易,求最大利润。
2023-07-08 15:25:24
208
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人