目录

  • Pytorch 记录
  • detach().numpy() 函数
  • Tensor.scatter_() 函数
  • 模型参数量计算
  • 网络搭建 tips
  • Python 记录
  • 字符串 title() 函数
  • 程序运行时warning警告的忽略方法
  • python 内置模块
  • Ubuntu 记录
  • 临时挂载硬盘
  • 文件拷贝
  • vim 的三种工作模式
  • 解决 NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.
  • 为 pycharm 创建桌面快捷方式
  • 其他第三方库
  • opencv-python
  • cv2.imread()
  • 边界模式 BorderMode
  • Matplotlib
  • legend (图例) 定位方法
  • 常用资源网址

Pytorch 记录

detach().numpy() 函数

常见于从计算图中剥离损失函数,下面是 “C知道” 的解释:

detach().numpy()函数是PyTorch中的一个函数,用于将一个Tensor从计算图中分离出来,并将其转换为一个NumPy数组。这个函数通常用于将模型输出的Tensor转换为NumPy数组,以便进行后续的处理和可视化。使用detach()函数可以避免在计算图中保留不必要的计算,从而提高计算效率。同时,使用numpy()函数可以将Tensor转换为NumPy数组,方便进行各种数学运算和可视化操作。

Tensor.scatter_() 函数

pytorch 某个值的个数 pytorch detach().numpy()_学习

src 中的元素,按照 index 被 scatter (可以理解为填充) 到目标 tensor 中,常用于生成 one-hot 编码。src 中每个元素的目标位置索引,除指定维度 (dimension == dim) 外,其他维度的索引不变,即只改变指定维度上的索引顺序 (按照 index) 。

模型参数量计算

pytorch 自带方法:

total = sum([param.nelement() for param in model.parameters()])

print("Number of parameter: %.2fM" % (total/1e6))

网络搭建 tips

  1. 卷积层后面跟 BN 层时,根据 BN 计算的原理可知,此时设置卷积层偏置 bias 多此一举,因此不设置偏置 bias;
  2. 在一些卷积层模块中包含参数 inplace,如 nn.ReLU(inplace=True),当 inplace(就地计算)为 True 时,将计算得到的值直接覆盖之前的值,不利用中间变量进行存储(注:产生的计算结果不会有影响,利用 inplace 计算可以节省内/显存,同时还可以省去反复申请和释放内存的时间,但是会对原变量覆盖,主要不带来错误就用);

Python 记录

字符串 title() 函数

返回字符串的标题大小写形式,即单词的第一个字符用大写字母表示,其余所有字母用小写字母表示。

s = 'PYTHON IS GOOD!'
print(s.title())

OUTPUT: Python Is Good!

程序运行时warning警告的忽略方法

python 程序开发时,warning 通常不会影响程序运行,但会影响对其他输出的监控。
方法一:

import warnings
warnings.filterwarnings('ignore')

方法二:忽略命令行下警告错误的输出

python -W ignore yourscript.py

python 内置模块

模块1:argparse——命令行选项、参数和子命令解析器

主要有三个步骤:
1.创建 ArgumentParser() 对象
2.调用 add_argument() 方法添加参数
3.使用 parse_args() 解析添加的参数

模块2:logging——主要用于输出运行日志,可以设置输出日志的等级、日志保存路径等

相比 print,具备如下优点:
1.可以通过设置不同的日志等级,在 release 版本中只输出重要信息,而不必显示大量的调试信息;
2.print 将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging 则可以由开发者决定将信息输出到什么地方,以及怎么输出;
3.和 print 相比,logging 是线程安全的。

logging.basicConfig(**kwargs):
使用默认格式化程序创建 StreamHandler 并将其添加到根日志记录器中,从而完成日志系统的基本配置。如果没有为根日志程序定义处理程序,debug()、info()、warning()、error()和 critical() 函数将自动调用 basicConfig()。

Ubuntu 记录

临时挂载硬盘

sudo mount /dev/sda5 ./USB

文件拷贝

cp [选项] 源文件或目录 目标文件或目录
-i 交互式提示
-r 递归拷贝目录及其内容
-v 显示拷贝后的路径描述
-a 保留文件的原有权限

vim 的三种工作模式

pytorch 某个值的个数 pytorch detach().numpy()_pytorch 某个值的个数_02

解决 NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

问题原因:
ubuntu 内核版本升级后,会优先使用较高的版本,ubuntu 会修改默认开机启动的内核版本(最新的)。而最新的内核版本和原来的 ubuntu 其他组件起了冲突,则导致无法连接 Nvidia 驱动了。
解决办法:

  1. 在(双)系统启动界面,进入“Ubuntu 高级选项”(如,索引为 1),查看旧版本内核的索引(如,索引为 2);
  2. 进入系统进行如下设置:
sudo gedit /etc/default/grub
# 再将进入设置 GRUB—DEFAULT
GRUB_DEFAULT="1> 2"
# 则系统启动时会自动进入 ubuntu 高级选项,并选择进入旧版本的系统
# 保存退出后,运行如下命令更新 GRUB 配置文件
sudo update-grub
  1. 重启系统
  2. 进入 Setting 中,将 ubuntu 的软件与系统更新,设置为“从不”。

为 pycharm 创建桌面快捷方式

创建快捷方式前的程序启动方式:
终端输入

pycharm.sh

桌面快捷方式的创建步骤:

  1. 在 /usr/share/applications 文件夹下创建 pycharm.desktop 文件
sudo vim /usr/share/applications/pycharm.desktop

注意:此时若不在命令前加 sudo,则在文件退出时会弹出报错
E212: Can’t open file for writing
这个报错是由于权限问题导致的。

  1. 编辑 pycharm.desktop 文件
[Desktop Entry]
Type=Application
Name=Pycharm
GenericName=Pycharm3
Comment=Pycharm3: The Python IDE
# Exec=sh /home/XXX/software/pycharm-community-2021.3.2/bin/pycharm.sh
Exec="/home/XXX/software/pycharm-community-2021.3.2/bin/pycharm.sh" %f
Icon=/home/XXX/software/pycharm-community-2021.3.2/bin/pycharm.png
Terminal=pycharm
Categories=Pycharm;
  1. 查看是否有效
    按住 win 键,搜索 pycharm,是否出现应用图标。
  2. 将 /usr/share/applications/pycharm.desktop 复制到桌面
    右击鼠标,选择 Allow launching。完成!

其他第三方库

opencv-python

cv2.imread()

def imread(filename: Any, 
		   flags: Any = None) -> None

flags: 图像的通道和色彩信息(默认值为 1,即彩色图像)
flags = -1, 8 位深度,原通道
flags = 0, 8 位深度,1 通道
flags = 1, 8 位深度,3 通道
flags = 2, 原深度,1 通道
flags = 3, 原深度,3 通道
flags = 4, 8 位深度,3 通道

边界模式 BorderMode

pytorch 某个值的个数 pytorch detach().numpy()_学习_03


pytorch 某个值的个数 pytorch detach().numpy()_学习_04

Matplotlib

legend (图例) 定位方法

  1. 使用参数 loc: str or pair of floats,其内置了一些位置 (default: ‘best’):
  2. 使用参数 bbox_to_ancher: BboxBase, 2-tuple, or 4-tuple of floats,可以控制任意位置,坐标表示比例:

常用资源网址