W&B Keras回调TypeError:输入类型不支持ufunc'isfinite'

时间:2020-01-20 00:25:16

标签: python tensorflow keras callback

我正在尝试使用输入为字符串张量作为输入的TF模型,我的模型包含一个TextVectorization层用于文本处理,这在TF 2.2中可用。

培训在W&B回调中失败,并出现以下错误

TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' 

调试时,我发现问题出在权重直方图的计算中

> /usr/local/lib/python3.6/dist-packages/numpy/lib/histograms.py(325)_get_outer_edges()
    323     else:
    324         first_edge, last_edge = a.min(), a.max()
--> 325         if not (np.isfinite(first_edge) and np.isfinite(last_edge)):
    326             raise ValueError(
    327                 "autodetected range of [{}, {}] is not finite".format(first_edge, last_edge))
ipdb> first_edge
b'0'
ipdb> last_edge
b'zurich'
ipdb> np.isfinite('0')
*** TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

这是我设置W&B回调并进行培训的方式

wandb_callback = wandb.keras.WandbCallback(log_weights=True)
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')
model.fit(train_ds, validation_data=valid_ds, epochs=config.epochs, shuffle=True, verbose=1, callbacks=[wandb_callback])

我尝试使用wandb.keras.WandbCallback()创建回调,但没有记录权重,但存在相同的问题,它一直尝试计算直方图,并在某个时期结束时失败。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可以共享您的实际模型代码吗?看起来模型本身包含字符串张量。通常,在通过网络之前,您需要将字符串转换为嵌入。您正在使用TensorFlow 2吗?