1.有关路径和文件的操作
os.mkdir()和os.makedirs() 第一个是创建单级目录,第二个可以创建多级目录
os.path.join() 连接路径
os.path.exist() 判断路径是否存在
y,sr = librosa.load(wav,sr=None),对音频进行导入,可以指定sr的值
a.equal(b) 判断两个tensor是否完全一样
-
rang(起点,终点,步长)
-
如何写一个dataloader
继承Dataset类,这个类类似于c++中的虚基类,源码如下:
__getitem__就是给一个item然后获取到对应的标签
len 就是获取到数据集的个数 -
tqdm:是一个快速的,易扩展的进度条提示模块,另外在西班牙语中还有I love you so much的意思
pbar = tqdm(train_loader, desc='Epoch: {}'.format(epoch + 1), ncols=100)
参数:iterable=None,
desc=None,进度条前面的提示
total,迭代元素的多少
leave,如果是true显示所有的进度条,如果是None只显示第一个
file,指定输出的路径
ncols,输出信息的宽度
mininterval=0.1 最小进度显示更新间隔
maxinterval 最大进度显示更新间隔
miniters 在迭代中显示最小进度的间隔 -
torch.unsqueeze()
squeeze是降维,unsqueeze是升维。clean = torch.unsqueeze(clean,dim=1)
-
nn.Conv1d参数解析
torch.nn.Conv1d(in_channels, "输入图像中的通道数"
out_channels, "卷积产生的通道数"
kernel_size, "卷积核的大小"
stride, "卷积的步幅。默认值:1"
padding, "添加到输入两侧的填充。默认值:0"
dilation, "内核元素之间的间距。默认值:1"
groups, "从输入通道到输出通道的阻塞连接数。默认值:1"
bias, "If True,向输出添加可学习的偏差。默认:True"
padding_mode "'zeros', 'reflect', 'replicate' 或 'circular'. 默认:'zeros'"
)
- ConvTranspose1d,转置卷积(上采样)
- nn.GroupNorm:
动态更新学习率
torch.optim.lr_scheduler.ReduceLROnPlateau()
schedular.step(val_loss) 里输入的val_loss是否减小来更改lr的值的
进度条tqdm
# 方法1
for i in tqdm.tqdm(可迭代对象):
pass
# 方法2
for idx, i in enumerate(tqdm.tqdm(可迭代对象)):
pass
detach()
detach()就是返回一个新的tensor,并且这个tensor是从当前的计算图中分离出来的。但是返回的tensor和原来的tensor是共享内存空间的。举个例子:如果A网络的输出被喂给B网络作为输入, 如果我们希望在梯度反传的时候只更新B中参数的值,而不更新A中的参数值,这时候就可以使用detach()
使用优化器
这三个函数的作用是先将梯度归零(optimizer.zero_grad()),然后反向传播计算得到每个参数的梯度值(loss.backward()),最后通过梯度下降执行一步参数更新(optimizer.step())
items() 函数以列表返回可遍历的(键, 值) 元组数组。
nn.conv1d的计算公式
nn.ConvTranspose1d 的计算公式
搭建Conda环境版本注意事项
- CUDA有两种,一种是运行api(cudaTool kit) ,还有一种是叫驱动api(就是显卡驱动的版本),我们常说的CUDA是指驱动api
- 看驱动CUDA的版本是多少
- 看pytorch版本(一定要下载GPU版本),一般会自带运行api(cuda Tool kit)
- 看cudnn版本,用来针对加速神经网络