要在tensorflow中并行裁剪一批图像,我使用了这些代码行:
def cropImage(ind,input,output,d):
input_t=input.read(ind)
return ind+1,input,output.write(ind,tf.random_crop(input_t,d)),d
def image_crop(t,batchsize ,dims):
c= lambda _ind,_1,_2,_3: control_flow_ops.math_ops.less(_ind, batchsize)
ind = tf.Variable(0,'iter')
output_ta = tensor_array_ops.TensorArray(
dtype='float32', size=batchsize,
tensor_array_name="dynamic_crop_output")
input_ta = tensor_array_ops.TensorArray(
dtype='float32', size=batchsize,
tensor_array_name="dynamic_crop_intput")
input_ta.unpack(t)
_1,_2,output,_3=control_flow_ops.While(c,cropImage,[ind,input_ta,output_ta,tf.constant(dims,name='dims')])
o = output.pack()
o.set_shape( [None] + list(dims))
return o
我的问题是这个问题:如果我没有把指令o.set_shape( [None] + list(dims))
放在看似无限循环的程序中,为什么?