Если вы выполните следующий код TensorFlow 2.1
import tensorflow as tf
import tensorflow_probability as tfp
tf.config.experimental_run_functions_eagerly(True)
def get_mnist_data(normalize=True, categorize=True):
img_rows, img_cols = 28, 28
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
if tf.keras.backend.image_data_format() == 'channels_first':
x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
input_shape = (1, img_rows, img_cols)
else:
x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
input_shape = (img_rows, img_cols, 1)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
if normalize:
x_train /= 255
x_test /= 255
if categorize:
y_train = tf.keras.utils.to_categorical(y_train)
y_test = tf.keras.utils.to_categorical(y_test)
return x_train, y_train, x_test, y_test, input_shape
def get_model(input_shape, num_classes=10):
model = tf.keras.Sequential()
model.add(tfp.layers.Convolution2DFlipout(6, input_shape=input_shape,
kernel_size=3, padding="SAME",
activation=tf.nn.relu))
model.add(tf.keras.layers.Flatten())
model.add(tfp.layers.DenseFlipout(num_classes))
return model
def train():
x_train, y_train, x_test, y_test, input_shape = get_mnist_data()
batch_size = 64
model = get_model(input_shape)
model.summary()
model.compile(loss="categorical_crossentropy")
model.fit(x_train, y_train, batch_size=batch_size, epochs=1)
if __name__ == '__main__':
train()
Вы получите следующую ошибку
NotImplementedError: Невозможно преобразовать символ c Tensor (truediv_2: 0) в numpy массив
Согласно трассировке, эта ошибка возникает, когда индикатор выполнения пытается что-то напечатать. Эта ошибка связана с утверждением tf.config.experimental_run_functions_eagerly(True)
. Однако, если вы удалите его, вы получите еще одну ошибку TypeError: Операция вне кода построения функции передается в тензор Графика .
Я пытался запустить все функции охотно для целей отладки , потому что, очевидно, не все функции работают с нетерпением в TensorFlow 2.0. См. эту проблему Github .
Вот проблема Github, связанная с этим вопросом .