Python Tensorflow:UnimplementedError:不支持将字符串转换为int32

时间:2018-02-11 08:15:04

标签: python-3.x tensorflow tensorflow-datasets

大家。 我是Tensorflow的新手 当我在这部分编写这样的代码时:

def get_batch(image,label,new_height,new_width,batch_size,capacity):
image=tf.cast(image,tf.string)
label=tf.cast(image,tf.int32)

input_queue= tf.train.slice_input_producer([image,label])
label=input_queue[1]
image_contents=tf.read_file(input_queue[0])
image=tf.image.decode_jpeg(image_contents,channels=3)

image=tf.image.resize_images(image,(new_height,new_width))
image=tf.image.per_image_standardization(image)
image_batch,label_batch=tf.train.batch([image,label],batch_size=batch_size,capacity=capacity,num_threads=8)

label_batch=tf.reshape(label_batch,[batch_size])
return image_batch,label_batch

顺便说一下。 Args:图像,标签从另一个函数返回,该函数读取存储图像和标签的文件。当我运行此代码时,我将new_height和new_width定义为常量

 I met the error like this:

UnimplementedError (see above for traceback): Cast string to int32 is not supported
         [[Node: Cast_1 = Cast[DstT=DT_INT32, SrcT=DT_STRING, _device="/job:localhost/replica:0/task:0/cpu:0"](Cast/x)]]

Traceback (most recent call last):

  File "<ipython-input-1-5c65685872d1>", line 1, in <module>
    runfile('C:/Users/yanghang/ugthesis/mean subtraction.py', wdir='C:/Users/yanghang/ugthesis')

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
    execfile(filename, namespace)

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/yanghang/ugthesis/mean subtraction.py", line 102, in <module>
    coord.join(threads)

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\tensorflow\python\training\coordinator.py", line 389, in join
    six.reraise(*self._exc_info_to_raise)

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\six.py", line 686, in reraise
    raise value

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\tensorflow\python\training\queue_runner_impl.py", line 234, in _run
    sess.run(enqueue_op)

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 778, in run
    run_metadata_ptr)

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 982, in _run
    feed_dict_string, options, run_metadata)

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1032, in _do_run
    target_list, options, run_metadata)

  File "C:\Users\yanghang\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1052, in _do_call
    raise type(e)(node_def, op, message)`

你能告诉我如何解决这个问题吗?    提前致谢

1 个答案:

答案 0 :(得分:0)

正如@mrry指出的那样,代码中有一个拼写错误:

label=tf.cast(image,tf.int32)

应改为:

label=tf.cast(label,tf.int32)