Я работаю над проектом, связанным с сегментацией экземпляра. Я пытаюсь обучить Se gNet своим собственным набором данных изображений, который содержит набор изображений и соответствующие им маски, и я успешно использовал tf.Dataset для загрузки своих данных. Но каждый раз, когда я использую питаемый итератор для передачи набора данных в Se gNet, моя программа всегда завершается без каких-либо ошибок или предупреждений. Мой код показан ниже.
load_satellite_image()
используется для чтения имени файла для изображений, а dataset()
используется для загрузки изображений с помощью tf.Dataset. Кажется, что итератор не может обновить входной конвейер.
train_path = "data_example/train.txt"
val_path = "data_example/test.txt"
config_file = 'config.json'
with open(config_file) as f:
config = json.load(f)
train_img, train_mask = load_satellite_image(train_path)
val_img, val_mask = load_satellite_image(val_path)
train_dataset = dataset(train_img, train_mask, config, True, 0, 1)
val_dataset = dataset(val_img, val_mask, config, True, 0, 1)
train_iter = train_dataset.make_initializable_iterator()
validation_iter = val_dataset.make_initializable_iterator()
handle = tf.placeholder(tf.string, shape=[])
iterator = tf.data.Iterator.from_string_handle(handle,
train_dataset.output_types,train_dataset.output_shapes)
next_element = iterator.get_next()
with tf.Session() as Sess:
sess.run(train_iter.initializer)
sess.run(validation_iter.initializer)
train_iter_handle = sess.run(train_iter.string_handle())
val_iter_handle = sess.run(validation_iter.string_handle())
for i in range(2):
print("1")
try:
while True:
for i in range(5):
print(sess.run(next_element,feed_dict={handle:train_iter_handle}))
print('----------------------------','\n')
for i in range(2):
print(sess.run(next_element,feed_dict={handle:val_iter_handle}))
except tf.errors.OutOfRangeError:
pass
После выполнения кода выше я получил:
In [2]: runfile('D:/python_code/tensorflow_study/SegNet/load_data.py',
wdir='D:/python_code/tensorflow_study/SegNet')
(tf.float32, tf.int32)
(TensorShape([Dimension(360), Dimension(480), Dimension(3)]), TensorShape([Dimension(360),
Dimension(480), Dimension(1)]))
(tf.float32, tf.int32)
(TensorShape([Dimension(360), Dimension(480), Dimension(3)]), TensorShape([Dimension(360),
Dimension(480), Dimension(1)]))
WARNING:tensorflow:From D:\Anaconda\envs\tensorflow-gpu\lib\site-
packages\tensorflow\python\data\ops\dataset_ops.py:1419: colocate_with (from
tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
In [1]:
Я запутался, что мой код завершается без какой-либо причины , Как видите, я могу получить форму и тип данных обучающих / проверочных изображений и масок, что означает, что проблема не имеет ничего общего с моим набором данных. Однако for
l oop в tf.Session()
не выполняется, и я не могу получить результат print("1")
. Итератор также не выполняется sess.run()
. Кто-нибудь сталкивался с этой проблемой раньше?
Спасибо !!!