Сбой обучения из-за сохранения модели: «tenorflow.GraphDef был изменен одновременно во время сериализации» - PullRequest
0 голосов
/ 09 октября 2018

В настоящее время я пытаюсь обучить модель, и мой входной конвейер построен на основе этого ответа здесь .Я хочу сохранить свою модель после каждой эпохи.Но после тренировок на несколько эпох тренировочный сбой.Я читал, что это потому, что он добавляет вход в качестве постоянного тензора на графике.Здесь предлагаются решения здесь , чтобы использовать tf.placeholder для решения проблемы.К сожалению, это не решает проблему для меня.Входной конвейер выглядит следующим образом

....
filenames = [P_1]
dataset = tf.data.TFRecordDataset(filenames)
def _parse_function(example_proto):
       keys_to_features = { 'data':tf.VarLenFeature(tf.float32)},
       parsed_features = tf.parse_single_example(example_proto,  keys_to_features)
       return tf.sparse_tensor_to_dense(parsed_features['data'
# Parse the record into tensors.
dataset = dataset.map(_parse_function)
# Shuffle the dataset
dataset = dataset.shuffle(buffer_size=1000)
# Repeat the input indefinitly 
dataset = dataset.repeat()      
# Generate batches     
dataset = dataset.batch(Batch_size) 
# Create a one-shot iterator
iterator = dataset.make_one_shot_iterator()
data = iterator.get_next()   
....
for i in range(epochs):
    for ii in range(iteration):
        image = sess.run(data)
        ....
     saver.save(sess, 'filename')

Сообщение об ошибке выглядит следующим образом

[libprotobuf FATAL external/protobuf_archive/src/google/protobuf/message_lite.cc:68] CHECK failed: (byte_size_before_serialization) == (byte_size_after_serialization): tensorflow.GraphDef was modified concurrently during serialization.
terminate called after throwing an instance of 'google::protobuf::FatalException'  
what():  CHECK failed: (byte_size_before_serialization) == (byte_size_after_serialization): tensorflow.GraphDef was modified concurrently during serialization.
Aborted

1 Ответ

0 голосов
/ 05 апреля 2019

Проблема выглядит так, как будто в _parse_function.Убедитесь, что синтаксический анализатор делает то же самое при создании файла TFrecord.Например, если они имеют одинаковый тип данных или около того

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...