4

tensorflow チームの提案に従って、tf.keras を使用した tensorflow の熱心な実行に慣れてきました。ただし、モデルをトレーニングするたびに警告が表示されます (編集: 実際には、この警告が何度も繰り返され、トレーニング ステップごとに複数回、標準出力があふれます)。

E tensorflow/core/common_runtime/bfc_allocator.cc:373] tried to deallocate nullptr

警告はトレーニングの質に影響を与えないようですが、それが何を意味するのか、それを取り除くことができるのかどうか疑問に思います.

CPUで実行されているpython 3.7とtensorflow 1.12でconda仮想環境を使用しています。(編集: python 3.6 でのテストでも同じ結果が得られます。) 警告を再現する最小限のコードは次のとおりです。興味深いことに、行 tf.enable_eager_execution() にコメントを付けて、警告が消えることを確認できます。

import numpy as np
import tensorflow as tf

tf.enable_eager_execution()
N_EPOCHS = 50
N_TRN = 10000
N_VLD = 1000

# the label is positive if the input is a number larger than 0.5
# a little noise is added, just for fun
x_trn = np.random.random(N_TRN)
x_vld = np.random.random(N_VLD)
y_trn = ((x_trn + np.random.random(N_TRN) * 0.02) > 0.5).astype(float)
y_vld = ((x_vld + np.random.random(N_VLD) * 0.02) > 0.5).astype(float)

# a simple logistic regression
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1, input_dim=1))
model.add(tf.keras.layers.Activation('sigmoid'))

model.compile(
    optimizer=tf.train.AdamOptimizer(),
    # optimizer=tf.keras.optimizers.Adam(),  # doesn't work at all with tf eager execution
    loss='binary_crossentropy',
    metrics=['accuracy']
)

# Train model on dataset
model.fit(
    x_trn, y_trn,
    epochs=N_EPOCHS,
    validation_data=(x_vld, y_vld),
)
model.summary()
4

1 に答える 1