CS231n Assignment 备忘

之前刷CS231n作业的时候,遇到的一些知识点,怕自己忘了,记录在这里。

Assignment2

  • 最后的softmax之前千万不要加relu,否则经过一段时间的sgd,会导致输出全0。反向求导也无效。
  • x.reshape(x.shape[0], -1).T != x.reshape(-1x.shape[0])

Assignment3

关于LSTM

  • 反向传播时状态s也要反向传播,而且要初始化为0。原因和h类似,建议画一下图。
  • h在反向传播时,是后一个节点和当前层输出对应loss的传播之和。整体反向传播的输入参数的dh一般是指每一层的输出对应的loss传播。

关于pytorch

  • 创建变量时,torch.zeros((N)).type(dtype) 中的 .type(dtype) 很重要!不然默认在CPU,往后写的时候会出现类型不匹配的问题
  • tensor.device 查看在cpu还是gpu
  • tensor.type(torch.cuda.FloatTensor) 改变到GPU
  • tensor.cuda() 和tensor.cpu()分别变为gpu和cpu
  • 反向传播的非叶子节点似乎没有tensor.grad???
  • fake_images = G(g_fake_seed).detach() # 梯度截断 防止往下传播

你可能感兴趣的:(DeepLearning)