深度学习包

torch 与 torchvision 版本对应关系|截止2022年最新

最新更新日期:2022.4.8 所有官方稳定版本的whl文件:https://download.pytorch.org/whl/torch_stable.html Commands for Versions >= 1.0.0 v1.10.1 Conda OSX # conda conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -c pytorch Linux and Windows # CUDA 10.2 conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=10.2 -c pytorch # CUDA 11.3 conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge # CPU Only conda install pytorch==1.10.1 torch...

训练网络时loss结果为NaN|PyTorch炼丹记

排查异常出现的地方 import torch # 正向传播 torch.autograd.set_detect_anomaly(True) # TODO # 反向传播 with torch.autograd.detect_anomaly(): loss.backward() 解决方案 1.调整学习率 如果在迭代的100轮以内,出现NaN,一般情况下的原因是因为你的学习率过高,需要降低学习率。可以不断降低学习率直至不出现NaN为止,一般来说低于现有学习率1~10倍即可。 2.减小batch size 3.梯度爆炸 如果当前的网络是类似于RNN的循环神经网络的话,出现NaN可能是因为梯度爆炸的原因,一个有效的方式是增加“gradient clipping”(梯度截断来解决) 数据归一化(减均值,除方差,或者加入normalization,例如BN、L2 norm等) 更换参数初始化方法(对于CNN,一般用xavier或者msra的初始化方法); 4.计算问题 可能用0作为了除数; 可能0或者负数作为自然对数 数组越界(尤其是自己,自定义了一个新的网络,可能出现这种情况) 在某些涉及指数计算,可能最后算得值为INF(无穷)(比如...

错误: RuntimeError: Distributed package doesn’t have NCCL built in|PyTorch踩坑

错误: RuntimeError: Distributed package doesn’t have NCCL built in 错误表述 File "C:\Users\AI.conda\envs\AI\lib\site-packages\torch\distributed\distributed_c10d.py", line 597, in _new_process_group_helper raise RuntimeError("Distributed package doesn’t have NCCL " RuntimeError: Distributed package doesn’t have NCCL built in 原因分析 windows不支持NCCL,应该修改为gloo 解决方案 在代码distributed_c10d.py中片段: prefix_store = PrefixStore(group_name, store) if backend == Backend.GLOO: pg = ProcessGroupGloo( pr...

(1)变分自编码器(Variational AutoEncoder, VAE)|系统解读Keras实现Generative Deep Learning

完整代码见附录 1.设置 import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers 2.创建采样层 class Sampling(layers.Layer): “””Uses (z_mean, z_log_var) to sample z, the vector encoding a digit.””” def call(self, inputs): z_mean, z_log_var = inputs batch = tf.shape(z_mean)[0] dim = tf.shape(z_mean)[1] epsilon = tf.keras.backend.random_normal(shape=(batch, dim)) return z_mean + tf.exp(0.5 * z_log_var) * epsilon 3.构建编码器 latent_dim = 2 encoder_inputs = keras.Input(shape=(28, 28, 1)) ...

Pytorch中的model.train()和model.eval()

model.train() 在使用pytorch构建神经网络的时候,训练过程中会在程序上方添加一句model.train(),作用是启用batch normalization和drop out。 启用BatchNormalization和 Dropout,将BatchNormalization和Dropout置为True   model.eval() 测试过程中会使用model.eval(),这时神经网络会沿用batch normalization的值,并不使用drop out。 不启用 BatchNormalization 和 Dropout,将BatchNormalization和Dropout置为False   解析 如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train(),在测试时添加model.eval()。 其中model.train()是保证BN层用每一批数据的均值和方差,而model.eval()是保证BN用全部训练数据的均值和方差; 而对于Dropout,model.train()是随机取一部分网络连接来训练更新参数, 而...