1. 模型拟合时报错:有运算梯度为None,表示这个运算没有梯度(不可导)
2 . 分析模型中哪个运算没有梯度。
自定义前向传播部分
训练参数可以追溯到
a. 模型中添加运算为:卷积层,全连接层,高斯函数,以及高斯函数与输入张量的相乘。
b. 卷积层,全连接层,高斯函数都是可导的,同时高斯函数与输入张量的乘法也是可导的。
c. 猜测:问题可能出在这个batch 相关的循环上。下面检查下这个地方。
-1. 把batch 调为1。 = 依然报错
-2. 那高斯数量设置为1。 = 依然报错
-3. 尝试去掉循环,仅使用一个batch。
d. 猜测:问题可能是我高斯采样过后的矩阵无法求导 or for loop ?
e. 无法定位到错误。手动推倒反向传播,确定是否每个运算都有梯度。
f. 自定义模型的训练过程,确认这一层中的运算是否可导。