使用tf.RunOptions的分段错误

时间:2019-05-17 08:57:21

标签: python tensorflow keras tf.keras

我正在开发一个相当大的模型,并且我需要使用tf.RunOptions或其他调试器来简化我的代码,因为我遇到了批处理量很小的OOM错误。但是在使用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(tensorflow-gpu上安装了pip,tf version 1.13.1python version 3.6.7CUDA 9.1.85GeForce GTX 980 4GB)macOS 10.12.6上的相同错误(tensorflow -cpu已安装pip tf version 1.13.1python version 3.7.2

1 个答案:

答案 0 :(得分: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)