- 博客(81)
- 收藏
- 关注
原创 ollama linux下载
实验室服务器(A6000)执行curl -fsSL https://ollama.com/install.sh | sh太慢了。发现 https://www.modelscope.cn/models/modelscope/ollama-linux。而sudo snap install ollama,容易爆cudalibrt.so12无法正常使用的bug。使用modelscope进行ollama的下载,网速很稳定,2-3mb/s。并且ollama拉取模型后,正常推理不报错。
2025-02-05 20:12:51
1189
2
原创 /usr/bin/ld: 当搜索用于 /lib/i386-linux-gnu/libcuda.so 时跳过不兼容的 -lcuda
参考 https://stackoverflow.com/questions/16710047/usr-bin-ld-cannot-find-lnameofthelibrary。/usr/bin/ld: 当搜索用于 /lib/i386-linux-gnu/libcuda.so 时跳过不兼容的 -lcuda。做微调时,发现找不到libcuda,很自然想到需要软链接到最新cuda版本下的libcuda.so。将正确的libcuda.so软连接到lib/下,ld可以找到正确的libcuda.so了。
2024-06-17 18:42:28
1029
原创 使用accumulate step节省显卡内存
使用accumulate step的意思就是,每次forward较小的batch,如batch=4,每4steps再更新一次参数,训练结果等效于batch=16。再跑一次batch设置为4,且accumulate step为4的情况。单卡,模型+batch=1的数据能跑起来。显存占比: 514MB VS 494MB。
2023-10-16 17:16:52
293
原创 学校机房坑爹的devc++
昨天考csp,机房devc不知道如何调成c++11导致我浪费了很长时间。正确做法:工具–》编译选项–》勾选“编译时加入以下命令”–》-std=c++11
2021-12-06 16:20:08
547
原创 SGD和Adam优化算法区别
深度学习二分类问题,选择使用已经训练好的resnet。在用Adam微调模型时,发现性能很差。在用SGD(随机梯度下降)时,效果很好。原因在于是二分类问题,数据的分布好计算,更适合SGD,而对于Adam更适合计算复杂分布的数据...
2021-10-20 18:06:32
5682
原创 jupyter notebook 加载图片 服务器挂掉
在代码前加import os #解决服务器挂掉的问题os.environ[“KMP_DUPLICATE_LIB_OK”]=“TRUE”相当于设置选项允许重复加载动态链接库。
2021-10-18 20:33:06
324
原创 从pytorch1.9.0cpu转到pytorch1.1.0gpu
首先conda install pytorch torchvision cudatoolkit=10.0嗯 卡在下载几百m的pytorch上了https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/win-64/去这里下载用 conda install --use-local $PATH_ROOT/XXX.tar.bz2再试试。。。。竟然成功了?...
2021-09-15 18:19:07
480
原创 vs2017 安装cuda10.0 踩过的坑
首先,尝试在vs2019上搭配cuda10.0失败,因为2019和cuda10不兼容我把2019卸载,换成2017,然后惊喜得发现,我的c盘多出了十几个G,不得不说,如果是初学者,安装低版本VS也没什么影响。在2017上看csdn各种教程,配置各种链接库,包含目录等等,都执行不了,并且代码无高亮。找到cuda10.0的安装包,尝试重新安装在安装的过程中,发现它自动给2017适配了,效果就是:多出了一个Nsight选项卡,说明此时才适配。我之前是先安装了cuda然后再安装的2017 所以没有出.
2021-09-02 09:42:36
1293
原创 15 残差网络(ResNet)稠密连结网络(DenseNet)
残差神经网络残差块在实践中,添加层往往不会减低误差,使用批量归一化层可以提升数据的稳定性,但问题依然存在。如果我们的理想映射为f(x),那么虚线框里需要拟合出f(x)-x,残差映射比起直接拟合出f(x)更容易优化。当f(x)及接近恒等映射时,残差映射容易捕捉恒等映射的细微变动。class Residual(nn.Module): # 本类已保存在d2lzh_pytorch包中方便以后使用 def __init__(self, in_channels, out_channels, use_
2021-08-26 14:36:28
1137
原创 14 批量归一化
批量归一化利用了小批量的平均值和方差,调整神经网络的中间输出。改善了因模型参数的更新造成的输出层输出的剧烈变化。对全连接层做批量归一化批量归一化层的输入是全连接层的输出,批量归一化层的输出是激活函数的输入。对一批小批量做归一化,目标维度是批次,即求出的均值的形状是一个样本的形状,对每一个样本做标准化后得到的也是一个样本的形状。引入可学习参数γ和β,与样本形状相同,分别与样本做按元素乘法和加法计算。最终得到了批量归一化层的输出yi在学习过程中,也存在批量归一化层不对样本造成任何变化的可能,即若
2021-08-26 14:34:33
249
原创 13 GooLeNet
含并行连结的网络,googlenetinception块inception出现了四条并行的线路。前三条线路的窗口大小分别为1,3,5,对第二条和第三条线路会进行1×1卷积减少通道数。最后在通道维上将每条线路的输出连结。因为inception块中引入了并行, 所以需要对其前向传播重定义,所以定义了一个类。class Inception(nn.Module): # c1 - c4为每条线路里的层的输出通道数 def __init__(self, in_c, c1, c2, c3, c4
2021-08-26 14:32:18
164
原创 12 VGG,NIN
vgg 利用重复块的网络与alexnet相比进步的地方在于出现了block结构,可以重复使用此结构来设计网络结构。vgg_block连续使用连续使用数个相同的填充为1、窗口形状为3×33\times 33×3的卷积层后接上一个步幅为2、窗口形状为2×22\times 22×2的最大池化层。池化层可以使输入高和宽减半。def vgg_block(num_convs, in_channels, out_channels): blk = [] for i in range(num_convs
2021-08-26 14:31:03
227
原创 11 卷积神经网络(LeNet)深度卷积神经网络(AlexNet)
卷积神经网络(LeNet)import timeimport torchfrom torch import nn, optimimport syssys.path.append("..") import d2lzh_pytorch as d2ldevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')class LeNet(nn.Module): def __init__(self):
2021-08-26 14:29:08
499
原创 10 池化层
池化层的作用是缓解卷积层对位置的过度敏感,解决图像中的物体出现的像素点偏移的问题池化层分为最大池化层和平均池化层也可以设置填充和步幅pool2d = nn.MaxPool2d((2, 4), padding=(1, 2), stride=(2, 3))在多通道情况下,池化层不会改变通道数量,是对所有输入层分别池化然后输出。...
2021-08-18 18:04:47
963
原创 9 卷积、padding,stride、多通道输入输出
卷积和互相关https://zhuanlan.zhihu.com/p/33194385深度学习中的卷积运算实际上就是互相关运算感受野卷积的目的:我们可以通过更深的卷积神经网络使特征图中单个元素的感受野变得更加广阔,从而捕捉输入上更大尺寸的特征。填充和步幅填充是指在输入的高和宽方向两侧填充元素,通常是0,使高和宽增大。使输出高宽增加。步幅是卷积核在高宽方向上以stride为每次移动的距离。使输出高宽减小。填充和步幅默认高宽相同,可以给定列表分别设置例如 stride = (2,3)一般情况下
2021-08-18 18:04:25
439
原创 8 读取和存储Tensor
torch.save(tensor,'xxx.pt')l = torch.load('xxx.pt')# 储存一个tensor列表torch.save([x,y],'xy.pt')#储存一个tensor字典torch.save({'x':x,'y':y},'xy_dict.pt')保存和加载模型torch.save(model.state_dict(),PATH)# 后缀为.ptmodel = TheModelClass(*args,**kwargs)model.load_state_d
2021-08-18 18:03:27
348
原创 7 自定义层
如何定义一个自定义层import torch from torch import nnclass MyLayer(nn.Module): def __init__(self,**kwargs): super(Mylayer,self).__init__(**kwargs) def forward(self,x):自己定义init和forward规则自定义参数时 可以使用ParameterList和ParameterDict分别定义参数的列表和字典
2021-08-18 18:02:50
94
原创 6 模型参数操作
模型参数访问Module类的parameter(),named_parameter()返回generator,后者返回名字和tensornet.parametor()返回所有层的参数,net[0].parametor返回第一层的参数在init()函数里,如果tensor是torch.nn.parameter.Parameter类型,则会被自动添加到模型的列表里因为Parameter是Tensor,即Tensor拥有的属性它都有,比如可以根据data来访问参数数值,用grad来访问参数
2021-08-18 18:02:26
134
原创 5 模型构造
Module类import torchfrom torch import nnclass MLP(nn.Module): # 声明带有模型参数的层,这里声明了两个全连接层 def __init__(self, **kwargs): # 调用MLP父类Module的构造函数来进行必要的初始化。这样在构造实例时还可以指定其他函数 # 参数,如“模型参数的访问、初始化和共享”一节将介绍的模型参数params super(MLP, self).
2021-08-18 18:01:48
145
原创 4 模型初始化
当模型层数过多时,最后的输出容易过大或过小,引起衰减和爆炸。模型初始化初始化的原因如果某一隐藏层的参数相同,则反向传播后的梯度相同,经过基于梯度的优化算法的迭代后的值也相同。则本质上这一层只有一个神经元发挥作用,所以初始化使参数不同。pytorch初始化模型参数通常采用nn.init.normal_(param, mean=0, std=0.01)进行正态分布式初始化也有通过Xavier随机初始化,假设全连接层输入个数为a,输出个数为b。则将每个参数均匀分布于使得每层输出的方差不受输入
2021-08-18 18:01:20
780
原创 3 应对过拟合的两种方法-----正则化和丢弃法
权重衰减权重衰减等价于L2正则化。正则化是通过在模型损失函数上添加正则项,约束所学到的参数,使其接近于0。如上图所示,由红到绿,增加了泛化能力。L2正则化在损失函数后新增一个正则化项其中w1,w2是权重参数,b是偏差参数,样本数为n。将权重参数用向量w=[w1,w2]表示经过小批量梯度下降后,参数变化情况权重衰减可以通过优化器中的weight_decay超参数来指定丢弃法规定概率p,对隐藏层中的所有单元,以概率p清零选定的隐藏单元,反向传播时,被清零的隐藏单元梯度为0,并对其他单元除以
2021-08-18 18:00:18
227
原创 2 多层感知机原理、模型选择、过拟合
多层感知机是在单层神经网络的基础上,添加了一个到多个隐藏层对于单隐藏层神经网络,H为隐藏层的输出,O为输出层的输出[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r6LrBGVN-1629280510820)(https://i.loli.net/2021/08/05/5j4JO6ad9NSeYyK.png)]将这两个式子联立起来无论是隐藏层有多少,其与单层神经网络等价。激活函数激活函数包括sigmoid,Relu,tanh。目的是使隐藏层引入非线性变换,使隐藏层
2021-08-18 17:55:33
569
原创 1 softmax回归原理
矢量加法可以提升速度,经可能多使用矢量加法而非循环a = torch.zero(1000)b= torch.zero(1000)start = time()d = a + bprint(time() - start)pytorch 基于numpy的广播机制a = torch.ones(3)b = 10print(a + b)# tensor([11., 11., 11.]如果我们想要修改tensor的数值,但是又不希望被autograd记录(即不会影响反向传播),那么.
2021-08-04 23:37:12
931
1
原创 写博客的意义
写博客的意义仅仅是为了对抗遗忘吗?中学时代,曾经听过“天才也会犯错,但是他们犯过一次错误就再也不会有第二次了”。博客的意义在于亲手记录下,自己犯过的错误,自己学到的经验,然后尽可能让自己不要重蹈覆辙,从而提高了成长的效率。实践也能证明,博客写得越多,底气就越足。不要忽视积累的力量,这种积累是绝对的积累,不是曲折向上的,就是绝对增加,永不下跌。坚持写博客,它就是一支永远挣钱的股票,这比任何投资都要来得物超所值。从现在开始,写博客,记录生活思考,记录学到的点点滴滴。有时不可避免会回头纠错或者补充,这是一种
2021-08-03 01:13:38
472
原创 ERROR: Exception: Traceback (most recent call last)
在cmd里复制whl包的链接,浏览器下载,手动pip install
2021-04-29 20:04:59
409
原创 蓝桥杯 D. 方格分割 dfs
D. 方格分割6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。#include<iostream>using namespace std;int book[7][7] = { 0 };int ans = 0;int dir[4][2] = { {-1,0},{1,0},{0,1},{0,-1}
2021-04-12 18:04:21
110
原创 蓝桥杯 全球变暖
全球变暖【2018 第九题】【题目描述】你有一张某海域 NxN 像素的照片,".“表示海洋、”#"表示陆地,如下所示:….##….##……##.…####.…###.…其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成如下样子:……………#………
2021-04-10 13:26:58
117
原创 蓝桥杯 ---合根植物(并查集)
问题描述w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)接下来k行,第2+k行两个整数
2021-04-07 15:56:00
132
原创 蓝桥杯 外卖店的优先级
题目描述“饱了么”外卖系统中维护着 N NN 家外卖店,编号 1 ∼ N 1∼N1∼N。每家外卖店都有一个优先级,初始时 (0 00 时刻) 优先级都为 0 00。每经过 1 11 个时间单位,如果外卖店没有订单,则优先级会减少 1 11,最低减到 0 00;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2 22。如果某家外卖店某时刻优先级大于 5 55,则会被系统加入优先缓存中;如果优先级小于等于 3 33,则会被清除出优先缓存。给定 T TT 时刻以内的 M MM 条订单信息,请你计
2021-04-05 18:34:49
231
原创 蓝桥杯 完全二叉树的权值
试题 F: 完全二叉树的权值【问题描述】给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 A1, A2, · · · AN现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。【输入格式】第一行包含一个整数 N。第二行包含 N 个整数 A1, A2, · · · AN 。【输出格式】输出一个整数代表答案。【样例输入】71 6 5 4 3
2021-04-05 17:36:00
130
原创 蓝桥杯迷宫 BFS
【问题描述】 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步数最
2021-04-02 19:49:27
106
原创 qt creator 环境配置遇到地问题
我按照网上流行地教程配置了qt creator下载安装时注意组件安装要完整然而 跟着教程我新建了helloworld工程,结果爆了130个红色错误。错误原因是 没有正确配置kit这里的c++设置是正确的。我之前错误地设置成了MSVC,因为我安装着VS2019 但安装qt时我只带了MingW,所以出现了错误,将c++后面地设置成下载的组件 MingW 32bit就好了。记得点apply。...
2021-02-07 16:17:34
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人