无法为图像标签创建张量流tfrecord

时间:2017-08-31 11:54:22

标签: python numpy tensorflow

您好我想为图像及其一个热阵列标签创建一个tfrecord。我能够为图像创建它,但不能为标签创建。我引用了这个SOF link,但得到了同样的错误。以下是我的代码。

folders:
-
    map: C:\xampp\htdocs\liveandnow
    to:  /home/vagrant/Code

当我执行此代码时,我收到以下错误。

def _int64_feature(value):
return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))


def _bytes_feature(value):
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))


for i in range(len(train_addrs)):

  print('reading image no {0} : and image address {1}'.format(i,train_addrs[i]))

  img = load_image(train_addrs[i])#loading the preprocessed image

  label = train_labels[i]#loading associated one-hot array

  print('label is ',label) #array([0, 1]) of type uint8 ,I tried with int64,int32 also;but no use

  feature = {'train/label':_int64_feature(label),
             'train/image':_bytes_feature(tf.compat.as_bytes(img.tostring())) #this part works 
           }    


  example = tf.train.Example(features=tf.train.Features(feature=feature))

  serToString = example.SerializeToString()

  writer.write(serToString)

我不知道我哪里出错了?任何帮助都会非常有帮助。

1 个答案:

答案 0 :(得分:1)

由于您将标签定义为_int64_feature,因此您必须使用int作为标签而不是numpy array

  label = train_labels[i]#loading associated one-hot array
  label = np.argmax(label)

您可以在阅读数据时将其转换为one_hot格式。

如果您想将其作为列表传递;修改你的功能定义

def _int64_feature(value):
    return tf.train.Feature(int64_list=tf.train.Int64List(value=value))