代码学习
实现代码过程中的一些小demo,之后可能会使用到,记录一下。
一、数据集制作
1、分类同一文件夹中不同后缀名的文件
python
1 | import os |
2、图像按标注可视化并裁剪
python
1 | import cv2 |
此代码有一点问题,有时间再修改,可以使用下面的代码
3、图像按标注裁剪
python
1 | import cv2 |
4、解压
python
1 | import os |
读改MAE代码
1、parse_args()
函数
python
1 | import argparse |
type:把从命令行输入的结果转成设置的类型
default:设置参数的默认值
action:参数出发的动作
help:参数命令的介绍
store_ture/store_false:保存相应的布尔值
choice:允许的参数值
dest:如果提供dest,例如dest=”a”,那么可以通过args.a访问该参数
store:保存参数,默认
store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。
append:将值保存在一个列表中。
append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。
count:参数出现的次数
version:打印程序版本信息
2、pathlib.path
python
1 | from pathlib import Path |
3、pytorch中list、ndarray、tensor之间的转化
- list<->ndarray
list->ndarray:np.array(list)
ndarray->list:ndarray.tolist()
list和ndarray的访问:
只能list[i][j]
ndarray[i][j]
和ndarray[i,j]
均可 - ndarray<->tensor
ndarray->tensor:torch.from_numpy(ndarray类型变量)
、torch.tensor(ndarray类型变量)
tensor->ndarray:tensor类型变量.numpy()
输出:python1
2
3
4
5
6
7
8
9
10
11import numpy as np
import torch
at = torch.ones(5)
an = np.ones(5)
bn = at.numpy() # tensor->ndarray
bt = torch.from_numpy(an) # ndarray->tensor
print(at)
print(an)
print(bn)
print(bt)注意:转换期间tensor张量和ndarrayu数组底层内存共享,更改一个量会同时更改另一个量,如:python1
2
3
4tensor([1., 1., 1., 1., 1.])
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
tensor([1., 1., 1., 1., 1.], dtype=torch.float64)输出:python1
2
3
4
5at += 5
print(at)
print(an)
print(bn)
print(bt)如果需要接触这种绑定,可以使用ndarray中的python1
2
3
4tensor([6., 6., 6., 6., 6.])
[1. 1. 1. 1. 1.]
[6. 6. 6. 6. 6.]
tensor([1., 1., 1., 1., 1.], dtype=torch.float64).copy()
函数:输出:python1
2
3
4
5
6
7
8
9cn = at.numpy().copy()
ct = torch.from_numpy(bn.copy())
at -= 5
print(at)
print(an)
print(bn)
print(bt)
print(cn)
print(ct)可以看到使用了python1
2
3
4
5
6tensor([1., 1., 1., 1., 1.])
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
tensor([1., 1., 1., 1., 1.], dtype=torch.float64)
[6. 6. 6. 6. 6.]
tensor([6., 6., 6., 6., 6.]).copy()
进行转化的cn
、ct
不受at -= 5
的影响值不变。
另外,使用torch.tensor()
由ndarray生成tensor也不是内存共享的,输出:python1
2
3
4
5
6
7a = np.ones(3)
b = torch.tensor(a)
print(a)
print(b)
a += 3
print(a)
print(b)python1
2
3
4[1. 1. 1.]
tensor([1., 1., 1.], dtype=torch.float64)
[4. 4. 4.]
tensor([1., 1., 1.], dtype=torch.float64) - list<->tensor
list->tensor:torch.tensor(list类型变量)
、torch.from_numpy(np.array(l))
(list->ndarray->tensor)
tensor->list:tensor.tolist()
、tensor.numpy().tolist()
(tensor->ndarray->list) - list字符与数字的转化输出:python
1
2
3string_list=['1.0','2.0','3.0']
float_list=list(map(float,string_list))
print(float_list)python1
[1.0, 2.0, 3.0]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LightZH's Blog!
评论
WalineLivere