TF 2.2中无需急切模式将张量转换为numpy数组的简单方法

TF 2.2中无需急切模式将张量转换为numpy数组的简单方法,numpy,tensorflow,keras,Numpy,Tensorflow,Keras,我找不到一种简单的方法来将张量转换为NumPy数组,而不启用eager模式,这提供了一个很好的.NumPy()方法,但也会减慢我的模型训练 我非常感谢你的建议。在上下文中,我正在为我的TensorFlow模型编写一个自定义度量,它依赖于一个scikit学习函数,该函数只接受numpy数组 我尝试用np.array()包装张量,这会抛出一个未实现的错误。还尝试了sessions和.eval(),但也没有成功,对于这个简单的工作来说似乎太难了 我的具体错误: NotImplementedError:

我找不到一种简单的方法来将张量转换为NumPy数组,而不启用eager模式,这提供了一个很好的.NumPy()方法,但也会减慢我的模型训练

我非常感谢你的建议。在上下文中,我正在为我的TensorFlow模型编写一个自定义度量,它依赖于一个scikit学习函数,该函数只接受numpy数组

我尝试用np.array()包装张量,这会抛出一个未实现的错误。还尝试了sessions和.eval(),但也没有成功,对于这个简单的工作来说似乎太难了

我的具体错误: NotImplementedError:无法将符号张量(model_17/density_17/Sigmoid:0)转换为numpy数组


用tf.NumPy_函数()包装我的NumPy度量就解决了这个问题

符号张量没有任何数据,因此无法创建数组。
tensorflow
不是详细介绍了这些张量以及它们是如何计算的吗?介意给我指一个@hpaulj的地方吗?我很乐意调查更多
# Custom metric
def accuracy_ml(y_true, y_pred):
  return accuracy_score(y_true, np.round(y_pred)) # ERROR here feeding tensor to sklearn function

# Model
cnn = simple_model(input_shape=(224, 224, 3),
                   num_classes=10,
                   base_model = base_ResNet101)

lr = 1e-2
loss_fn = tf.keras.losses.BinaryCrossentropy()
metrics = [accuracy_ml]
cnn.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=lr),
            loss=loss_fn,
            metrics=metrics)

# Simple baseline eval that fails
validation_steps=17
loss0, accuracy0 = cnn.evaluate(validation_batches, steps = validation_steps)