Tensorflow中的“称为终止的纯虚拟方法”

时间:2019-03-19 07:25:17

标签: python tensorflow

使用tf.data.Dataset API构建数据管道时,我在训练中遇到错误:

pure virtual method called terminate 
called without an active exception 
Aborted (core dumped)

值得注意的是,该错误不是在开始时发生,而是在训练过程的中间(在4800个时期之后)发生。这是我建立管道的方式:

import tensorflow as tf

epochs = 30000
eval_step = 400
sess = tf.InteractiveSession()
# code to read and process data

features_placeholder = tf.placeholder(train_features.dtype, train_features.shape)
labels_placeholder = tf.placeholder(train_labels.dtype, train_labels.shape)

train_dataset = tf.data.Dataset.from_tensor_slices((features_placeholder, labels_placeholder, file_list_input))
train_dataset = train_dataset.repeat()
train_dataset = train_dataset.batch(batch_size_placeholder)
train_dataset = train_dataset.prefetch(buffer_size=1)

val_dataset = tf.data.Dataset.from_tensor_slices((features_placeholder, labels_placeholder, file_list_input))
val_dataset = val_dataset.repeat()
val_dataset = val_dataset.batch(batch_size_placeholder)

iterator = tf.data.Iterator.from_structure(train_dataset.output_types, train_dataset.output_shapes) 
features, labels = iterator.get_next()

train_iterator = iterator.make_initializer(train_dataset)
val_iterator = iterator.make_initializer(val_dataset)

# code to build model
for i in range(epochs):
    sess.run([train_iterator, ... # other ops],
             feed_dict = {[features_placeholder: train_features,
                           labels_placeholder: train_labels]})
    if (i%eval_step)==0:
        sess.run([val_iterator, ... # other ops],
             feed_dict = {[features_placeholder: val_features,
                           labels_placeholder: val_labels]})

有人遇到过同样的问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:-1)

我在tensorflow 1.12中遇到了同样的问题,并在升级到1.13后解决了它。祝你好运!