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()