Мой код висит на следующем утверждении:
print('Beginning Eval...')
feed_dict_train = {img_data: images_batch.eval(session=session),
img_labels: labels_batch.eval(session=session)}
Я пытался оценить как на одном примере, так и в качестве пакета. Код для понимания того, как создаются images_batch и label_batch, выглядит следующим образом:
Создание одного примера:
def read_single_example(filename):
#Mini-init
image_size = 256
filenames = tf.train.string_input_producer([filename], num_epochs = None)
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filenames)
features = tf.parse_single_example(
serialized_example,
features={
'label':tf.FixedLenFeature([], tf.float32),
'image':tf.FixedLenFeature([image_size*image_size*3], tf.float32)
})
label = features['label']
#label = tf.get_default_session().run(label)
image_data = features['image']
#image_data = tf.get_default_session().run(image_data)
image = tf.reshape(image_data,(256,256,3))
return label, image
Чтение одного примера:
label_train, image_train = read_single_example(path)
Пакетирование примеров внутри цикла обучения:
print('Getting Batch')
images_batch, labels_batch = tf.train.shuffle_batch(
[image_train, label_train], batch_size=batch_size,
capacity=2000,
min_after_dequeue=1000)
Записи, считанные с диска, были созданы с найденным кодом здесь , но по сути это просто набор изображений 256x256x3 с тензором 1x41 для меток. Это то, что я думаю, что я все равно сделал, надеясь, что записи не там, где я сделал ошибку, или у меня есть 100 ГБ мертвых данных.
Вот так начинается сеанс Tf:
session = tf.Session()
init = tf.global_variables_initializer()
session.run(init)
tf.train.start_queue_runners(sess=session)
Что, насколько я понимаю, было всем, что мне нужно было сделать, чтобы все работало как задумано. Суть полного кода для сети можно найти здесь . Надеюсь, я не сделал ничего глупого, и спасибо за помощь!