我在mac os上安装了python 3.6。我有文本文件存储图像的名称和每个图像的类号。
#label.txt:
img0001.jpg 1
img0002.jpg 3
img0003.jpg 5
img0004.jpg 10
img0005.jpg 6
img0006.jpg 8
img0007.jpg 10
.....
我想将它们作为输入数据的标签提供给tensorflow中的神经网络,并像这样同时将图像提供给网络
xs = tf.placeholder(tf.float32,[None,#size of my photo])
ys = tf.placeholder(tf.float32,[None,#size of my label if it is an array])
我找不到任何相关文档。有人可以告诉我,我应该为此感到高兴吗?
答案 0 :(得分:3)
您可以使用streight forward python i / o实用程序(https://docs.python.org/3/tutorial/inputoutput.html),如:
names = []
labels = []
with open('label.txt', 'r') as f:
for line in f.readlines():
tokens = line.split(' ')
names.append(tokens[0])
labels.append(int(tokens[1]))
然后您可以使用names数组加载图像,将标签加载为y数组。
答案 1 :(得分:3)
假设您想知道如何将图像及其各自的标签输入神经网络。
有两件事:
正如Thomas Pinetz所说,一旦你计算了名字和标签。创建一个标签的热编码。
from PIL import Image
number_of_batches = len(names)/ batch_size
for i in range(number_of_batches):
batch_x = names[i*batch_size:i*batch_size+batch_size]
batch_y = labels[i*batch_size:i*batch_size+batch_size]
batch_image_data = np.empty([batch_size, image_height, image_width, image_depth], dtype=np.int)
for ix in range(len(batch_x)):
f = batch_x[ix]
batch_image_data[ix] = np.array(Image.open(data_dir+f))
sess.run(train_op, feed_dict={xs:batch_image_data, ys:batch_y})