使用tf.nn.conv2d_transpose重新创建tf.layers.conv2d_transpose

问题描述

我正在努力使用适当的tf.nn.Conv2d_transpose来正确地重新创建tf.layers.conv2d_transpose的功能。事实是,这两个版本中使用相同权重的输出是不同的,所以我在犯一些错误

定义conv2d_layer的代码如下:

slim.conv2d_transpose(
    input,1,kernel_size=[3,3],stride=2,padding="SAME",activation_fn=None,normalizer_fn=None
)

还有定义我对conv2d_transpose的实现的代码(分配权重并从具有上一层的网络中对权重进行偏置之后)

def prediction_layer(self,inputs,layer_name,strides,outputs):
    dyn_input_shape = tf.shape(inputs)

    batch_size = dyn_input_shape[0]
    out_h = dyn_input_shape[1] * strides
    out_w = dyn_input_shape[2] * strides

    out_shape = tf.stack([batch_size,out_h,out_w,outputs])

    pred = tf.nn.Conv2d_transpose(inputs,self.weights[layer_name + "/weights"],strides=[1,1],output_shape=out_shape)
    pred = tf.nn.bias_add(pred,self.biases[layer_name + "/biases"])

    return pred

#deFinition of my conv2d_transpose
self.prediction_layer(inputs,layer_name="pose/part_pred/block4",strides=2,outputs=1)

有什么建议吗?

非常感谢您。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)