武丢丢

细想全是问题,去做才有答案

0%

环境配置记录

本地配置方法:去pytorch官网找到要下载的历代版本,比如本次配置版本为

conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=11.8 -c pytorch -c nvidia

直接使用这个命令即可下载pytoch相关包以及cuda包,此处cuda包的版本不需要非得和电脑上安装的cuda软件版本一致。最后在下载一个cudnn的包即可

速度太慢

直接使用上述命令的速度太慢,故采用本地下载方式。

1.去清华镜像网站找到对应python版本的pytorch,torchvision和torchaudio包的文件并下载,并使用下述命令下载到虚拟环境:

conda install --use-local C:\Users\武丢丢\Downloads\文件名

2.使用conda search cuda –info命令,得到适配的cuda版本及下载网址,cudnn同理。得到cuda和cudnn的本地包之后,用步骤1命令下载到虚拟环境。

3.下载完进入虚拟环境后运行import torch会报错shm.dll找不到,这是在虚拟环境中再次运行pytorch官方命令:(这次会快很多

conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=11.8 -c pytorch -c nvidia

即可解决错误

注意

若遇到conda无法创建新环境的问题,重启电脑多半可以解决

步骤:

1.github创建一个与工程名同名的仓库,不要勾选任何可选项

2.进入工程名目录

3.右键打开git bash

4.运行以下代码:

git init
touch README.md
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:wu-diu-diu/仓库名.git
git push -u origin main

main可以换成master

本步骤适用于将一个完善了的project上传至github的情况

tensordot使用方法

主要是对张量进行点乘,对于多维张量来说,有时候需要指定维度进行点乘

numpy.tensordot(a, b, axes=0,1,2)axes=1的话,则结果是两个数组以矩阵相乘的形式计算.实际为a的最后一个维度和b的第一个维度进行点乘

若a,b是二维数组,此时即为矩阵乘法。numpy中的轴分布如下图:

axis=0和axis=2的情况参考numpy的官方解释

对于多维数组,axis可以指定多个轴进行点乘,例如(3, 4, 5)数组和(5, 4, 2)数组,可以指定第一个数组的1, 2轴和第二个数组的1, 0轴相点乘。代码为:

np.random.seed(10)
A = np.random.randint(0,9,(3,4,5))
B = np.random.randint(0,9,(5,4,2))
result5 = np.tensordot(A, B, [(1,2), (1,0)])
result5
array([[181, 142],
   [251, 190],
   [259, 235]])

意为A的第1轴和第2轴,与B的第1轴和第0轴点积,注意要点积的轴尺寸是一样的,这是点积的要求。(这里B的取出来后会转置一下)

对A来说,即要取第0轴的元素,有3个,对于B来说,要取第2轴的元素,有2个,故最后的结果为(3,2)。可手动取出来测试一下:

np.sum(B[:,:,0].T * A[0])
181

参考链接

Dezero Bug 记录

在步骤52的时候,添加cupy库,引起一系列bug。
1.UserWarning: Failed to auto-detect cl.exe path: <class 'distutils.errors.DistutilsPlatformError'>: No Microsoft Visual C++ version found
即cupy库需要使用编译器构建C/C++扩展模块。在 Windows 系统上,通常使用 Microsoft Visual C++ 编译器(cl.exe)。如果你的系统上没有安装适当版本的 Visual C++,或者 Python 无法找到它的路径,就会出现这种错误。

解决方法1:

安装 VS 2022 时候会顺便下载C++编译器,,并将编译器的位置添加至环境变量,这样即可解决。解决链接。同时应注意编译器版本和cuda的兼容问题,第一次下载的编译器版本过新,后又下载了一个旧点的版本。同样是上面这个博主的文章链接

解决方法2:

安装cupy的预编译版本:pip install cupy-cuda11x,11x是因为我电脑安装的cuda是11.7版本的。链接

上述方法我两个都试了很多次,但最终还是报错,VS版本不支持之类的。重启电脑后错误消失,所以我也不知道到底哪个方法起效了哈哈

过程中遇到问题

1.Anaconda 崩溃:无法创建环境,一直出错误报告。

解决方法

重装了一遍,想保留环境的话,将envs文件夹内的环境文件压缩保存,待新装的anaconda装好之后,再解压到envs文件夹中即可。

2.pycharm无法切换环境: 新建了环境,无法在pycharm中添加

解决方法

不选择添加conda环境,直接添加系统解释器链接

3.conda创建新环境在C盘:新建一个环境在C盘,导致我下载新的包时候找不到环境

解决方法

修改.condarc文件链接

4.系统环境变量Path丢失:不知道怎么环境变量里的Path路径没了,安装conda,cuda,运行hexo都需要添加环境变量。

解决方法

故新建了一个环境变量Path,参照网上的图片添加了相应的路径,也不知道对不对。后续出现找不到命令的错误,多半是因为该命令的exe文件所在的路径没有添加至环境变量当中。

5.module ‘cupy’ has no attribute ‘scatter_add’
上面的问题都解决后,出现了这个小问题,原因是cupy版本过新,已经没有这个方法了

解决方法

在发生错误的位置,import cupyx,再编写cupyx.scatter_add是正确的,即cupyx这个包保留了这个方法。

总结

折腾了一天,终于可以用cupy运行dezero的程序了,也就是步骤52的程序终于成功运行。大功告成!!!

添加所有环境至jupyter

代码如下:
1.conda activate my-conda-env
2.conda install ipykernel
3.conda deactivate
4.conda activate base
5.conda install nb_conda_kernels
6.jupyter notebook

这样打开jupyter后,就可以随意切换环境了
参考链接

Conda创建新环境步骤

第一步:

conda创建一个新的环境:conda create -n 环境名 python=x.x,注意,python版本要和安装的torch版本相对应,可在该网址查询其对应关系

第二步:

安装torch包:去pytorch官网 下载GPU版本的torch,torchvision包,即选择带有**+cuxxx**的版本

第三步:查询并安装对应版本的cuda和cudnn

使用conda search cudatoolkitconda search cudnn来确定可安装的版本

第四步:检查

命令行输入python进入编辑器,依次输入:import torch, print(torch.__version__), print(torch.cuda.is_available()),结果为Ture,则环境配置成功。cuda和cudnn版本对应可参考网址

注意:安装包时若出现一大行warning,检查校园网是否连接,梯子是否关闭,梯子光直连还不行,要退出才行。

Conda安装和pip安装区别

conda安装时,会检查各个包之间的依赖关系,版本是否对应,即conda安装后会保证包能够正常运行,而pip安装则不行,而且有的包用pip安装不了用conda却可以。所以建议一直使用一种方式安装

安装镜像源设置

清华大学镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
显示已添加的源:
conda config --show channels

添加镜像源:conda config --append channels conda-forge

第一步

在blog目录下,打开git bash ,再输入:hexo new 文章名

第二步

撰写文章,注意添加tag时要加一个空格再写,不然会报错

第三步

保存文章后,hexo cleanhexo ghexo d

或者先用hexo s在本地先查看一下效果

CUDA和torch兼容问题

安装迁移学习的python包时,发现python版本过低(3.8),于是换了一个3.11版本python的环境运行程序发现报错,.cuda()函数报错。

原因是torch版本和cuda版本不兼容。本来想重新新建一个最新版本python(3.12)的环境省的以后再换,但在新的环境中安装torch时又发现版本不兼容,搜索百度后得知最新的torch也只能支持<=3.11的python环境。

故仍换回3.11版本,在3.11版本中重新安装了和已安装cuda对应的torch版本后程序报错消失。

总结

这次发现了多个问题:

一个是conda安装和pip安装的问题,还没有搞明白。

一个是安装wheel版本是什么也没有搞明白。

反正稀里糊涂解决了问题吧。

笔记用来记录所学到的一些知识或者生活中的一些感悟。目前能想到的内容有以下几类:

机器学习

记录学习机器学习中的一些总结和感悟,这样有助于自己更好的理解知识点,可以作为组会之前的一个总结。

生活感悟

生活中的点点滴滴都很值得纪念,比如爱情学习工作生活等等,这样当自己多年后回看时,或许会有不一样的感觉。

暂时只能想到这么多,第一篇笔记就这样吧

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment