我目前正在从头开始实施一个litle深度学习框架,因为它很有趣。
显然,一个不到1000年的框架有一个2D卷积的实现。因为我希望至少能够用它来训练一些东西,所以用嵌套循环进行卷积不是一个好主意。
这就是为什么我要展开我的输入矩阵并将其与内核相乘。我已经成功地为一个(batch_size ,dims ,img_height ,width)
形状的矩阵实现了forwardpass。
现在的问题是,我只能通过大量的换位和重塑来实现,当它进入后传球时,基本上一切都会中断。
右键知道我正在用内核K = (k,k)
展开输入x = (bs ,dim ,h ,w)
进入unrolled = (bs ,dim ,h*w ,k**2)
形状,它看起来已经很奇怪了,但不知怎么的,在前向通道中仍然有效,但正如我所说的,在后向通道中不起作用(可能用它实现工作后向通道,但我希望它是干净的),所以
现在的问题是:使用shape = (bs ,dim ,h ,w)
to展开输入的支撑形状是什么?如何快速有效地实现这一点
感谢您抽出时间,祝您度过愉快的一天:)
目前没有回答
相关问题 更多 >
编程相关推荐