带张量流标签的通用输入图像

问题描述:

我想在张量流中制作带有标签的通用输入图像。 我检查了问题Tensorflow read images with labels并编写我的测试代码,但有一些错误。带张量流标签的通用输入图像

import tensorflow as tf 

    from tensorflow.python.framework import ops 
    from tensorflow.python.framework import dtypes 

    txtfilename = '/home/kang/Documents/work_code_PC1/data/UCLandUsedImages/UCImage_Labels.txt' 

    def read_labeled_image_list(image_list_file): 
     """Reads a .txt file containing pathes and labeles 
     Args: 
      image_list_file: a .txt file with one /path/to/image per line 
      label: optionally, if set label will be pasted after each line 
     Returns: 
      List with all filenames in file image_list_file 
     """ 
     f = open(image_list_file, 'r') 
     filenames = [] 
     labels = [] 
     for line in f: 
      filename, label = line[:-1].split(' ') 
      filenames.append(filename) 
      labels.append(int(label)) 
     return filenames, labels 

    def read_images_from_disk(input_queue): 
     """Consumes a single filename and label as a ' '-delimited string. 
     Args: 
      filename_and_label_tensor: A scalar string tensor. 
     Returns: 
      Two tensors: the decoded image, and the string label. 
     """ 
     label = input_queue[1] 
     file_contents = tf.read_file(input_queue[0]) 
     example = tf.image.decode_png(file_contents, channels=3) 
     return example, label 


    # Reads pfathes of images together with their labels 
    image_list, label_list = read_labeled_image_list(txtfilename) 

    images = ops.convert_to_tensor(image_list, dtype=dtypes.string) 
    labels = ops.convert_to_tensor(label_list, dtype=dtypes.int32) 

    # Makes an input queue 
    input_queue = tf.train.slice_input_producer([images, labels], 
               shuffle=True) 

    with tf.Session() as sess: 
     result = sess.run([input_queue]) 

我要运行的会话,并看看在input_queue,但我得到了以下错误:

File "<ipython-input-3-ddf11f8f84bc>", line 1, in <module> 
    runfile('/home/kang/Documents/work_code_PC1/VGG_tensorflow_UCMerced/readUClandUsedImagetxt.py', wdir='/home/kang/Documents/work_code_PC1/VGG_tensorflow_UCMerced') 

    File "/usr/local/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 714, in runfile 
    execfile(filename, namespace) 

    File "/usr/local/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 81, in execfile 
    builtins.execfile(filename, *where) 

    File "/home/kang/Documents/work_code_PC1/VGG_tensorflow_UCMerced/readUClandUsedImagetxt.py", line 69, in <module> 
    result = sess.run([input_queue]) 

    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 340, in run 
    run_metadata_ptr) 

    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 523, in _run 
    processed_fetches = self._process_fetches(fetches) 

    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 493, in _process_fetches 
    % (subfetch, fetch, type(subfetch), str(e))) 

TypeError: Fetch argument [<tf.Tensor 'input_producer_2/Gather:0' shape=() dtype=string>, <tf.Tensor 'input_producer_2/Gather_1:0' shape=() dtype=int32>] of [<tf.Tensor 'input_producer_2/Gather:0' shape=() dtype=string>, <tf.Tensor 'input_producer_2/Gather_1:0' shape=() dtype=int32>] has invalid type <type 'list'>, must be a string or Tensor. (Can not convert a list into a Tensor or Operation.) 

我查image_list,label_list的值时,输出是正确的,所以这里有什么问题? 非常感谢。

我想尝试删除result = sess.run([input_queue])中input_queue周围的方括号,因为您要将输出馈送指定为单个张量而不是列表。