首页 Paddle框架 帖子详情
conv_transpose 相同输入和相同参数得到的输出不同
收藏
快速回复
Paddle框架 问答深度学习 1040 1
conv_transpose 相同输入和相同参数得到的输出不同
收藏
快速回复
Paddle框架 问答深度学习 1040 1

conv_transpose gpu版本filter_size>3的条件下固定输入和参数,多次运行得到的结果不同。(在Kernel里调试发现: 在cudnnConvolutionBackwardData之前打印的input和filter相同,经过cudnnConvolutionBackwardData计算之后的output不同)
paddle环境:1.5.2和1.6.1都会出现。
cuda:9.0
cudnn:7.5

测试代码:

import paddle.fluid as fluid
def test(place, data):
    input = fluid.layers.data(dtype='float32', shape=[None, 128, 8, 8], name='data')
    param_attr = fluid.ParamAttr(name='tc_w', initializer=fluid.initializer.Constant(1.0), trainable=True)
    result = fluid.layers.conv2d_transpose(input, num_filters=128, bias_attr=None, param_attr=param_attr,
        filter_size=4, act=None)

    exe = fluid.Executor(place)
    exe.run(fluid.default_startup_program())

    main_program=fluid.default_main_program())

    res, = exe.run(feed={'data':data}, fetch_list=[result])
    return res

import numpy
import numpy as np
numpy.random.seed(13)
#data = numpy.loadtxt("result_batch_norm_81.tmp_3.txt").reshape((1, 128, 8, 8)).astype(np.float32)
data = np.random.rand(1, 128, 8, 8).astype(np.float32)
res_gpu = test(fluid.CUDAPlace(0), data)
np.savetxt("result1_c.txt", res_gpu[0].reshape((-1, 1)))
print res_gpu

结果对比:
image

0
收藏
回复
全部评论(1)
时间顺序
Zhaolong Xing
#2 回复于2019-11

cuda10.1 cudnnv7.5也有此问题

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户