Ошибка сегментации с использованием tf.RunOptions

Я разрабатываю довольно большую модель, и мне нужно использовать tf.RunOptions или другие отладчики, чтобы немного tf.RunOptions свой код, потому что я получаю ошибки OOM с очень маленькими размерами пакетов. Но я получаю segfault после использования tf.RunOptions .

Я не верю, что это проблема модели, потому что следующий код создаст проблемы (пока работает тот же код без runopt ):

    import tensorflow as tf
    import tensorflow.keras.models as mm
    import tensorflow.keras.layers as ll
    import numpy as np

    model = mm.Sequential([
        ll.Dense(27,input_shape=(1,)),
        ll.Activation('relu'),
        ll.Dense(27),
        ll.Activation('softmax')
        ])

    runopt = tf.RunOptions(report_tensor_allocations_upon_oom = True)

    model.compile(optimizer='sgd',
                  loss='mean_squared_error',
                  metrics=['accuracy'],
                  options=runopt)

    a = np.zeros(27)*10

    model.fit(a,a,epochs=10)

Получили ту же ошибку в Linux 18.04 (tenorflow-gpu, установленный с pip, tf version 1.13.1 , python version 3.6.7 , CUDA 9.1.85 , GeForce GTX 980 4GB) и в macOS 10.12.6 (тензор-процессор-cp, установленный с pip , tf version 1.13.1 , python version 3.7.2 )

Всего 1 ответ


Чтобы использовать tf.RunOptions , вы должны использовать также tf.RunMetadata() !

Это исправило эту проблему:

import tensorflow as tf
import tensorflow.keras.models as mm
import tensorflow.keras.layers as ll
import numpy as np

model = mm.Sequential([
    ll.Dense(27,input_shape=(1,)),
    ll.Activation('relu'),
    ll.Dense(27),
    ll.Activation('softmax')
    ])

runopt = tf.RunOptions(report_tensor_allocations_upon_oom = True)
runmeta = tf.RunMetadata()

model.compile(optimizer='sgd',
              loss='mean_squared_error',
              metrics=['accuracy'],
              options=runopt,
              run_metadata=runmeta)

Есть идеи?

10000