Python tf.random\u crop不能与通配符一起使用?

Python tf.random\u crop不能与通配符一起使用?,python,tensorflow,Python,Tensorflow,我正在用Python3.5+TensorFlow1.8构建一个图像翻译网络。 对于数据扩充,我尝试使用带有通配符的tf.random_crop(),如下所示: # input images A = tf.placeholder(tf.float, shape=(None, 480, 640, 3)) B = tf.placeholder(tf.float, shape=(None, 480, 640, 3)) # images concatenation to crop on the same

我正在用Python3.5+TensorFlow1.8构建一个图像翻译网络。 对于数据扩充,我尝试使用带有通配符的
tf.random_crop()
,如下所示:

# input images
A = tf.placeholder(tf.float, shape=(None, 480, 640, 3))
B = tf.placeholder(tf.float, shape=(None, 480, 640, 3))

# images concatenation to crop on the same random seed
AB = tf.concat([A, B], 3)

# random cropping with wildcard for batch_size specification
AB_cropped = tf.random_crop(AB, [-1, 480, 480, 4])

# cropped images
A_ = AB_cropped[:,:,:,:3]
B_ = AB_cropped[:,:,:,3:]

...
每次运行都会出现一些不同的错误(有时会产生错误的结果)。 发生的错误如下所示:

# input images
A = tf.placeholder(tf.float, shape=(None, 480, 640, 3))
B = tf.placeholder(tf.float, shape=(None, 480, 640, 3))

# images concatenation to crop on the same random seed
AB = tf.concat([A, B], 3)

# random cropping with wildcard for batch_size specification
AB_cropped = tf.random_crop(AB, [-1, 480, 480, 4])

# cropped images
A_ = AB_cropped[:,:,:,:3]
B_ = AB_cropped[:,:,:,3:]

...
InvalidArgumentError(回溯请参见上文):应在[0,1]中开始[0],但得到2
回溯(最近一次呼叫最后一次):
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1350行,在
返回fn(*args)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1329行,在
状态,运行(元数据)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/framework/errors\u impl.py”,第473行,在退出中__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors\u impl.InvalidArgumentError:应在[0,1]中开始[0],但得到2
[[Node:preprocess/random_crop=Slice[Index=DT_INT32,T=DT_FLOAT,_device=“/job:localhost/replica:0/task:0/device:CPU:0”](预处理/concat,预处理/random_crop/mod,预处理/random_crop/size)]]
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“alpha_gan_-based.py”,第247行,在
_例如,sess.run([hybrid_op,hybrid_loss],{image:image_batch,depth:depth_batch,z_prior:sample_z()})
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第895行,正在运行
运行_元数据_ptr)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1128行,正在运行
feed_dict_tensor、options、run_元数据)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1344行,运行
选项,运行(元数据)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1363行,在_do_调用中
提升类型(e)(节点定义、操作、消息)
tensorflow.python.framework.errors\u impl.InvalidArgumentError:应在[0,1]中开始[0],但得到2
[[Node:preprocess/random_crop=Slice[Index=DT_INT32,T=DT_FLOAT,_device=“/job:localhost/replica:0/task:0/device:CPU:0”](预处理/concat,预处理/random_crop/mod,预处理/random_crop/size)]]
由op“预处理/随机裁剪”引起,定义于:
文件“alpha_gan_-based.py”,第156行,在
裁剪=(tf.random_裁剪(合并,[-1191924])/255)*2-1
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/ops/random_ops.py”,第316行,随机裁剪
返回数组_ops.slice(值、偏移量、大小、名称=名称)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/ops/array_ops.py”,第625行,在切片中
返回gen\u数组操作。\u切片(输入、开始、大小、名称=名称)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/ops/gen_array_ops.py”,第4687行,在
“切片”,输入=输入,开始=开始,大小=大小,名称=名称)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/framework/op_def_library.py”,第787行,位于“应用”和“操作”帮助程序中
op_def=op_def)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/framework/ops.py”,第3160行,在create_op中
op_def=op_def)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/framework/ops.py”,第1625行,在__
self._traceback=self._graph._extract_stack()35; pylint:disable=protected access
InvalidArgumentError(回溯请参见上文):应在[0,1]中开始[0],但得到2
[[Node:preprocess/random_crop=Slice[Index=DT_INT32,T=DT_FLOAT,_device=“/job:localhost/replica:0/task:0/device:CPU:0”](预处理/concat,预处理/random_crop/mod,预处理/random_crop/size)]]
“重塑”无法推断空张量的缺失输入大小,除非所有指定的输入大小均为非零
回溯(最近一次呼叫最后一次):
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1350行,在
返回fn(*args)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1329行,在
状态,运行(元数据)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/framework/errors\u impl.py”,第473行,在退出中__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors\u impl.InvalidArgumentError:除非所有指定的输入大小均为非零,否则重塑无法推断空张量缺少的输入大小
[[Node:encoder/Flatte/Reforme=Reforme[T=DT_FLOAT,Tshape=DT_INT32,_device=“/job:localhost/replica:0/task:0/device:CPU:0”](encoder/Relu_6,encoder/Flatte/Reforme/shape)]]
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“alpha_ganu-based.py”,第248行,在
_例如,sess.run([hybrid_op,hybrid_loss],{image:image_batch,depth:depth_batch,z_prior:sample_z()})
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第895行,正在运行
运行_元数据_ptr)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1128行,正在运行
feed_dict_tensor、options、run_元数据)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1344行,运行
选项,运行(元数据)
文件“/usr/tensorflow/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1363行,在_do_调用中
提升类型(e)(节点定义、操作、消息)
tensorflow.python.framework.errors\u impl.InvalidArgumentError:除非所有指定的输入大小均为非零,否则重塑无法推断空张量缺少的输入大小
[[Node:encoder/plant/restrape=restrape[T=DT_FLOAT,Tshape=DT_INT32,_device=“/job:localhost/replica:0/task:
Traceback (most recent call last):
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1350, in _do_call
         return fn(*args)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1329, in _run_fn
         status, run_metadata)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 473, in __exit__
         c_api.TF_GetCode(self.status.status))
     tensorflow.python.framework.errors_impl.InvalidArgumentError: Reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero
         [[Node: encoder/flatten/Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](encoder/Relu_6, encoder/flatten/Reshape/shape)]]

     During handling of the above exception, another exception occurred:

     Traceback (most recent call last):
       File "alpha_gan_based.py", line 248, in <module>
         _, eg_loss = sess.run([hybrid_op, hybrid_loss], {image:image_batch, depth:depth_batch, z_prior:sample_z()})
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 895, in run
         run_metadata_ptr)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1128, in _run
         feed_dict_tensor, options, run_metadata)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1344, in _do_run
         options, run_metadata)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1363, in _do_call
         raise type(e)(node_def, op, message)
     tensorflow.python.framework.errors_impl.InvalidArgumentError: Reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero
         [[Node: encoder/flatten/Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](encoder/Relu_6, encoder/flatten/Reshape/shape)]]

     Caused by op 'encoder/flatten/Reshape', defined at:
       File "alpha_gan_based.py", line 163, in <module>
         z_encoded, intermidiate = encoder(x_real_image)
       File "alpha_gan_based.py", line 54, in encoder
         x = tf.layers.flatten(x)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/layers/core.py", line 414, in flatten
         return layer.apply(inputs)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/layers/base.py", line 762, in apply
         return self.__call__(inputs, *args, **kwargs)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/layers/base.py", line 652, in __call__
         outputs = self.call(inputs, *args, **kwargs)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/layers/core.py", line 376, in call
         outputs = array_ops.reshape(inputs, (array_ops.shape(inputs)[0], -1))
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py", line 3997, in reshape
         "Reshape", tensor=tensor, shape=shape, name=name)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
         op_def=op_def)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 3160, in create_op
         op_def=op_def)
       File "/usr/tensorflow/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1625, in __init__
         self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

     InvalidArgumentError (see above for traceback): Reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero
         [[Node: encoder/flatten/Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](encoder/Relu_6, encoder/flatten/Reshape/shape)]]