在 TF 2.2 中无需预先模式即可将张量转换为 numpy 数组的简单方法



我找不到一种简单的方法在不启用渴望模式的情况下将张量转换为 NumPy 数组,这给出了一个不错的 .numpy(( 方法,但也减慢了我的模型训练速度。

我将非常感谢您的建议。对于上下文,我正在为我的 TensorFlow 模型编写一个自定义指标,该模型依赖于 scikit 学习函数,该函数仅接受 numpy 数组。

我尝试用 np.array(( 包装张量,这会引发一个未实现的错误。还给了会话和 .eval(( 一个尝试,但也没有让它工作,对于这个简单的工作来说似乎太多了。

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

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

用 tf.numpy_function(( 包装我的 NumPy 指标解决了它。 https://www.tensorflow.org/api_docs/python/tf/numpy_function