使用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]})
有人遇到过同样的问题吗?我该如何解决?
答案 0 :(得分:-1)
我在tensorflow 1.12中遇到了同样的问题,并在升级到1.13后解决了它。祝你好运!