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'"
)

torch.optim.lr_scheduler.ReduceLROnPlateau()

schedular.step(val_loss) 里输入的val_loss是否减小来更改lr的值的
# 方法1
for i in tqdm.tqdm(可迭代对象):
pass
# 方法2
for idx, i in enumerate(tqdm.tqdm(可迭代对象)):
pass
detach()就是返回一个新的tensor,并且这个tensor是从当前的计算图中分离出来的。但是返回的tensor和原来的tensor是共享内存空间的。举个例子:如果A网络的输出被喂给B网络作为输入, 如果我们希望在梯度反传的时候只更新B中参数的值,而不更新A中的参数值,这时候就可以使用detach()
这三个函数的作用是先将梯度归零(optimizer.zero_grad()),然后反向传播计算得到每个参数的梯度值(loss.backward()),最后通过梯度下降执行一步参数更新(optimizer.step())



