提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- os.listdir(path)
- enumerate() 函数
- python操作h5文件
- python中的[:, ::-1]
- pytorch中为什么要使用日志
- @staticmethod
- ubuntu压缩文件夹
- with as
- random.random()
- importlib.import_module()
- torch.load()
- torch.backends.cudnn.benchmark
- to.(device)
- torch.optim.lr_scheduler.StepLR
- torch.utils.data.DataLoader
- 将for循环里的内容在一行内输出
- 进度条库tqdm
- optimizer.zero_grad()
- torch.cuda.empty_cache()
- append
- 模型的保存和加载
- scheduler.step()
- nn.Sequential(*layer)
- nn.dropout()
- rearrange
- permute
- Unfold函数
- view函数
- contiguous函数
- torch.nn.functional.interpolate
- assert
- torch.linspace
- squeeze
- torch.optim.Adam()
- hasattr() 函数
- torch.unsqueeze()和torch.squeeze()
- nn.init.kaiming_uniform_()
- 4D的rearrange
- masked_fill()
- .item()
- model.eval()
- image.convert()
- with torch.no_grad()
- multinomial.Multinomial(1, fair_probs).sample()
- len(train_loader)和batchsize之间的关系
- SAI2MacPI
- MacPI2SAI
- time.ctime
- nn.LayerNorm()
-
torch.matmul()
普通的矩阵乘法函数
-
nn.Dropout:防止过拟合,用法如下
https://blog.csdn.net/weixin_47050107/article/details/122722516
- 检查tensor x的大小
- 对张量中所有元素进行求和
- 广播机制
- X < Y 也是一个同维度的tensor
pandas.read_csv() #加载原始数据集
os.listdir(path)
https://blog.csdn.net/qq_29931083/article/details/107765186
返回值为制定路径下的文件或者文件夹的列表。
enumerate() 函数
https://www.runoob.com/python/python-func-enumerate.html
python操作h5文件
https://zhuanlan.zhihu.com/p/549538285
光场数据集h5文件比较多。
python中的[:, ::-1]
# 对列表进行反转
my_list = [1, 2, 3, 4, 5]
reversed_list = my_list[::-1]
print(reversed_list) # 输出: [5, 4, 3, 2, 1]
# 对字符串进行反转
my_string = "Hello, World!"
reversed_string = my_string[::-1]
print(reversed_string) # 输出: "!dlroW ,olleH"
# 对二维数组进行列逆序排列
my_array = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
reversed_array = my_array[:, ::-1]
print(reversed_array)
# 输出:
# [[3, 2, 1],
# [6, 5, 4],
# [9, 8, 7]]
pytorch中为什么要使用日志
@staticmethod
class MyClass:
@staticmethod
def my_static_method(arg1, arg2):
# 静态方法的实现
# 不依赖于实例的属性或方法
return arg1 + arg2
# 通过类名调用静态方法
result = MyClass.my_static_method(3, 5)
print(result) # 输出: 8
ubuntu压缩文件夹
zip -r 压缩后的文件名.zip 原文件的路径
with as
random.random()
返回随机生成的一个实数,它在[0,1)范围内。
importlib.import_module()
https://blog.csdn.net/edward_zcl/article/details/88809212
torch.load()
https://blog.csdn.net/pearl8899/article/details/109566084
torch.backends.cudnn.benchmark
为整个网络的每个卷积层搜索最适合的卷积实现算法,用来加速网络的训练需要手动开启。
to.(device)
https://blog.csdn.net/weixin_41503889/article/details/120349496
将所有最开始读取数据时的tensor变量copy一份到device所指定的GPU上去,之后的运算都在GPU上进行。
torch.optim.lr_scheduler.StepLR
optimizer:优化器
step_size:number of epochs to update learning rate
gamma:更新学习率的乘法因子,如经过15个epoch减半,则gamma为0.5
torch.utils.data.DataLoader
dataset (Dataset) – dataset from which to load the data.
要从中加载数据的数据集。
batch_size (int, optional) – how many samples per batch to load (default: 1).
每批次要装载多少样品
shuffle (bool, optional) – set to True to have the data reshuffled at every epoch (default: False).
设置为True以使数据在每个时期都重新洗牌
sampler (Sampler or Iterable, optional) – defines the strategy to draw samples from the dataset. Can be any Iterable with __len__ implemented. If specified, shuffle must not be specified.
定义从数据集中抽取样本的策略
batch_sampler (Sampler or Iterable, optional) – like sampler, but returns a batch of indices at a time. Mutually exclusive with batch_size, shuffle, sampler, and drop_last.
类似于采样器,但一次返回一批索引。 与batch_size,shuffle,sampler和drop_last互斥。
num_workers (int, optional) – how many subprocesses to use for data loading. 0 means that the data will be loaded in the main process. (default: 0)
多少个子流程用于数据加载。 0表示将在主进程中加载数据。 (默认值:0)
collate_fn (callable, optional) – merges a list of samples to form a mini-batch of Tensor(s). Used when using batched loading from a map-style dataset.
合并样本列表以形成张量的小批量。
pin_memory (bool, optional) – If True, the data loader will copy Tensors into CUDA pinned memory before returning them. If your data elements are a custom type, or your collate_fn returns a batch that is a custom type.
如果为True,则数据加载器在将张量返回之前将其复制到CUDA固定的内存中。 如果您的数据元素是自定义类型,或者您的collate_fn返回的是一个自定义类型的批处理
drop_last (bool, optional) – set to True to drop the last incomplete batch, if the dataset size is not divisible by the batch size. If False and the size of dataset is not divisible by the batch size, then the last batch will be smaller. (default: False)
如果数据集大小不能被批量大小整除,则设置为True以删除最后一个不完整的批量。 如果为False并且数据集的大小不能被批次大小整除,则最后一批将较小。
timeout (numeric, optional) – if positive, the timeout value for collecting a batch from workers. Should always be non-negative. (default: 0)
如果为正,则为从工作人员收集批次的超时值。 应始终为非负数。 (默认值:0)
worker_init_fn (callable, optional) – If not None, this will be called on each worker subprocess with the worker id (an int in [0, num_workers - 1]) as input, after seeding and before data loading. (default: None)
prefetch_factor (int, optional, keyword-only arg) – Number of samples loaded in advance by each worker. 2 means there will be a total of 2 * num_workers samples prefetched across all workers. (default: 2)
每个子流程预先加载的样本数。 2表示将在所有子流程中预取总共2 * num_workers个样本。 (默认值:2)
persistent_workers (bool, optional) – If True, the data loader will not shutdown the worker processes after a dataset has been consumed once. This allows to maintain the workers Dataset instances alive. (default: False)
如果为True,则一次使用数据集后,数据加载器将不会关闭工作进程。 这样可以使Worker Dataset实例保持活动状态。 (默认值:False)
将for循环里的内容在一行内输出
python3中print()会自动换行,end属性默认为换行符\n,此时将end属性改为‘’,就不会自动换行了
进度条库tqdm
https://zhuanlan.zhihu.com/p/163613814
total:项目总数
ncols:进度条宽度
optimizer.zero_grad()
通常三个一起使用,作用分别是先将梯度归零(optimizer.zero_grad()),然后反向传播计算得到每个参数的梯度值(loss.backward()),最后通过梯度下降执行一步参数更新(optimizer.step())
torch.cuda.empty_cache()
用于释放缓冲区
https://blog.csdn.net/hxxjxw/article/details/119777443
append
https://blog.csdn.net/wangyuxiang946/article/details/122142534
模型的保存和加载
https://blog.csdn.net/weixin_40522801/article/details/106563354
scheduler.step()
用来更新学习率
https://blog.csdn.net/qq_20622615/article/details/83150963
nn.Sequential(*layer)
https://blog.csdn.net/u013548568/article/details/80294708
nn.dropout()
https://blog.csdn.net/weixin_47050107/article/details/122722516
rearrange
https://zhuanlan.zhihu.com/p/342675997
permute
将tensor得维度换位置
Unfold函数
https://blog.csdn.net/ViatorSun/article/details/119940759
view函数
类似于reshape
contiguous函数
https://blog.csdn.net/kdongyi/article/details/108180250
深拷贝
torch.nn.functional.interpolate
https://blog.csdn.net/qq_44289607/article/details/123510897
用于插值和上采样
assert
assert后面得命令正确则,继续往下执行,否则就崩溃
torch.linspace
返回一个一维tensor,包含在区间0和self.token_dim - 1上均匀间隔的self.token_dim个点。
squeeze
从数组的形状中删除单维度条目,即把shape中为1的维度去掉
https://blog.csdn.net/zenghaitao0128/article/details/78512715
torch.optim.Adam()
https://blog.csdn.net/Ibelievesunshine/article/details/99624645
hasattr() 函数
hasattr(object, name)如果有该属性,则返回true,否则返回false
torch.unsqueeze()和torch.squeeze()
https://zhuanlan.zhihu.com/p/86763381
前者是扩张维度,后者是缩小维度
nn.init.kaiming_uniform_()
神经网络权重初始化,了解作用即可我感觉,到时候仿照着用。
4D的rearrange
SpaTrans
b:batch
a:angRes
c:channel
h:height
w:width
AngTrans
masked_fill()
代码的意思是把atten_mask这个mask里面值为0的地方替换成-inf(负无穷),然后把mask里面值为1的地方替换为0.0
.item()
.item()用于提取只包含一个元素的tensor里取值,loss里用这个为了防止tensor无线叠加导致的显存爆炸。提取多个元素的tensor中的值用.tolist()。
model.eval()
image.convert()
用来实现不同图像格式的转换
with torch.no_grad()
https://blog.csdn.net/sazass/article/details/116668755
multinomial.Multinomial(1, fair_probs).sample()
https://blog.csdn.net/qq_44788215/article/details/127249308
len(train_loader)和batchsize之间的关系
train_loader = DataLoader(dataset=train_set, num_workers=12, batch_size=cfg.batch_size, shuffle=True)
假如有15680个图片,batchsize为4,则len(train_loader)为3920,即每份有4张图片,有3920份
如果batchsize为2,则len(train_loader)为7840
SAI2MacPI
i = 0, j = 0时,相当于把[0, 0], [0, 64], [64, 0], [64, 64]这四个像素点拿出来组成[0, 0]位置的宏像素点,放到list temp V中。当i = 0,j = 1时,相当于把[1, 1], [1, 65], [65, 1], [65, 65]这四个像素点拿出来组成[0, 1]位置的宏像素点,并把它放到list temp V中。当i = 0,j = 63时,形成[0, 63]位置的宏像素点,此时,第一行的所有宏像素点拼好了,然后把他们按照V维度concat起来。等第二行的宏像素图像形成之后,加入到list temp U中,等到所有宏像素点形成之后,把64行的宏像素点按照U维度concat起来。
MacPI2SAI
和SAI2MacPI类似,i = 0, j = 0时相当于,横着,每隔7个,竖着每7个,也就是64个像素点,取出来组成每个SAI,然后i = 0,j = 6时,相当于第一行的SAI形成了,按照列的维度concat起来,7行的SAI形成后,再按照行的维度concat起来。
time.ctime
time.ctime()[4:-5]
time.ctime()
是 Python 中的一个函数,用于返回当前时间的字符串表示形式。这个字符串的格式通常类似于:“Mon Aug 11 13:50:20 2023”,其中包括了星期、月份、日期、时间和年份信息。
time.ctime()[4:-5]
是截取了time.ctime()
中的字符串,从第5个位置到第倒数第六个位置,即Aug 11 13:50:20
nn.LayerNorm()
https://blog.csdn.net/weixin_41978699/article/details/122778085
如果输入数据是4维,bchw,要nn.LayerNorm©,那么默认对最后一维进行归一化,所以需要将输入进行rearrange,即变为(b, h, w, c)。