围观的胖子 2019-07-12 22:33 采纳率: 0%
浏览 1569

构建cycleGAN严重问题

构建cycleGAN运行到鉴别器的优化时报错Conv2DCustomBackpropInput:input depth must be evenly divisible by filter depth求处理办法o(╥﹏╥)o

def discriminator(x,name,is_training=True):
    reuse=len([var for var in  tf.trainable_variables() if var.name.startswith(name)])>0
    with tf.variable_scope(name,reuse=reuse):
        #256 3->128 64
        layer_1=tf.layers.conv2d(x,64,4,2,padding='SAME')
        layer_1=tf.nn.leaky_relu(layer_1)
        #128 64->64 128
        layer_2=tf.layers.batch_normalization(tf.layers.conv2d(layer_1,128,4,2,padding='SAME'),training=is_training)
        layer_2=tf.nn.leaky_relu(layer_2)
        #64 128->32 256
        layer_3=tf.layers.batch_normalization(tf.layers.conv2d(layer_2,256,4,2,padding='SAME'),training=is_training)
        layer_3=tf.nn.leaky_relu(layer_3)



        layer=tf.layers.conv2d(layer_3,1,4,1,padding='SAME')


        return layer

鉴别器的结构如上,为复现论文的结果

损失函数为交叉熵

#判别器器损失
d_x=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=disc_fake_x,labels=tf.zeros_like(disc_fake_x)))+tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=disc_real_x,labels=tf.ones_like(disc_real_x)))

d_y=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=disc_fake_y,labels=tf.zeros_like(disc_fake_y)))+tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=disc_real_y,labels=tf.ones_like(disc_real_y)))



d_loss=d_y+d_x

完整报错:

Traceback (most recent call last):
  File "C:\Users\lenovo\Desktop\library\CycleGAN\CycleGan.py", line 150, in <module>
    sess.run(g_train,fd)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\client\session.py", line 900, in run
    run_metadata_ptr)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\client\session.py", line 1135, in _run
    feed_dict_tensor, options, run_metadata)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\client\session.py", line 1316, in _do_run
    run_metadata)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\client\session.py", line 1335, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Conv2DCustomBackpropInput: input depth must be evenly divisible by filter depth
     [[Node: gradients_1/discriminator_d_x/conv2d_3/Conv2D_grad/Conv2DBackpropInput = _MklConv2DBackpropInput[T=DT_FLOAT, _kernel="MklOp", data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](gradients_1/discriminator_d_x/conv2d_3/Conv2D_grad/ShapeN, discriminator_d_x/conv2d_3/kernel/read, gradients_1/AddN, DMT/_350, discriminator_d_x/conv2d_3/kernel/read:1, DMT/_351)]]

Caused by op 'gradients_1/discriminator_d_x/conv2d_3/Conv2D_grad/Conv2DBackpropInput', defined at:
  File "E:\java\pyzo\source\pyzo\pyzokernel\start.py", line 151, in <module>
    __pyzo__.run()
  File "E:\java\pyzo\source\pyzo\pyzokernel\interpreter.py", line 222, in run
    self.guiApp.run(self.process_commands, self.sleeptime)
  File "E:\java\pyzo\source\pyzo\pyzokernel\guiintegration.py", line 85, in run
    repl_callback()
  File "E:\java\pyzo\source\pyzo\pyzokernel\interpreter.py", line 583, in process_commands
    self._process_commands()
  File "E:\java\pyzo\source\pyzo\pyzokernel\interpreter.py", line 611, in _process_commands
    self.runfile(tmp)
  File "E:\java\pyzo\source\pyzo\pyzokernel\interpreter.py", line 887, in runfile
    self.execcode(code)
  File "E:\java\pyzo\source\pyzo\pyzokernel\interpreter.py", line 950, in execcode
    exec(code, self.locals)
  File "C:\Users\lenovo\Desktop\library\CycleGAN\CycleGan.py", line 140, in <module>
    g_train=tf.train.GradientDescentOptimizer(0.002).minimize(g_loss,var_list=g_vars)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\training\optimizer.py", line 399, in minimize
    grad_loss=grad_loss)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\training\optimizer.py", line 511, in compute_gradients
    colocate_gradients_with_ops=colocate_gradients_with_ops)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\gradients_impl.py", line 532, in gradients
    gate_gradients, aggregation_method, stop_gradients)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\gradients_impl.py", line 701, in _GradientsHelper
    lambda: grad_fn(op, *out_grads))
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\gradients_impl.py", line 396, in _MaybeCompile
    return grad_fn()  # Exit early
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\gradients_impl.py", line 701, in <lambda>
    lambda: grad_fn(op, *out_grads))
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\nn_grad.py", line 520, in _Conv2DGrad
    data_format=data_format),
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py", line 1340, in conv2d_backprop_input
    dilations=dilations, name=name)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\framework\ops.py", line 3414, in create_op
    op_def=op_def)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\framework\ops.py", line 1740, in __init__
    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

...which was originally created as op 'discriminator_d_x/conv2d_3/Conv2D', defined at:
  File "E:\java\pyzo\source\pyzo\pyzokernel\start.py", line 151, in <module>
    __pyzo__.run()
[elided 5 identical lines from previous traceback]
  File "E:\java\pyzo\source\pyzo\pyzokernel\interpreter.py", line 950, in execcode
    exec(code, self.locals)
  File "C:\Users\lenovo\Desktop\library\CycleGAN\CycleGan.py", line 108, in <module>
    disc_fake_x=discriminator(fake_x,'discriminator_d_x')
  File "C:\Users\lenovo\Desktop\library\CycleGAN\CycleGan.py", line 97, in discriminator
    layer7=tf.layers.conv2d(layer_3,1,4,1,padding='SAME')
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\layers\convolutional.py", line 427, in conv2d
    return layer.apply(inputs)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 774, in apply
    return self.__call__(inputs, *args, **kwargs)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\layers\base.py", line 329, in __call__
    outputs = super(Layer, self).__call__(inputs, *args, **kwargs)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 703, in __call__
    outputs = self.call(inputs, *args, **kwargs)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\layers\convolutional.py", line 184, in call
    outputs = self._convolution_op(inputs, self.kernel)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 868, in __call__
    return self.conv_op(inp, filter)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 520, in __call__
    return self.call(inp, filter)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 204, in __call__
    name=self.name)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py", line 1042, in conv2d
    data_format=data_format, dilations=dilations, name=name)
  File "c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)

InvalidArgumentError (see above for traceback): Conv2DCustomBackpropInput: input depth must be evenly divisible by filter depth
     [[Node: gradients_1/discriminator_d_x/conv2d_3/Conv2D_grad/Conv2DBackpropInput = _MklConv2DBackpropInput[T=DT_FLOAT, _kernel="MklOp", data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](gradients_1/discriminator_d_x/conv2d_3/Conv2D_grad/ShapeN, discriminator_d_x/conv2d_3/kernel/read, gradients_1/AddN, DMT/_350, discriminator_d_x/conv2d_3/kernel/read:1, DMT/_351)]]

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-07-13 13:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题