利用tensorflow搭建好一个网络后,在另一个程序文件中编写代码进行模型训练报错。报错位置在:
g_optim = tf.train.AdamOptimizer(learning_rate).minimize(loss) # Optimization method:
错误如下:
ValueError: Depth of input (8) is not a multiple of input depth of filter (3) for '{{node gradients/inference/subnet5/conv2d_transpose_grad/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="SAME", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](gradients/inference/subnet5/concat_grad/tuple/control_dependency_1, w3/read)' with input shapes: [?,80,80,8], [3,3,3,8].
更改如下:我在搭建的模型文件中可以正常运行,当训练时在优化器出报错,显示我网络反向传播有问题。定位网络层位置,发现是使用conv2d_transpose 反卷积函数实现上采样的原因,使用反卷积导致在训练时,梯度下降求导时报错,所以删除反卷积