gpt4 book ai didi

python - Keras PREDICTION 抛出 'TypeError: ufunc ' add' 不包含签名匹配类型 dtype ('
转载 作者:太空宇宙 更新时间:2023-11-03 20:39:08 24 4
gpt4 key购买 nike

我构建了一个槽填充(一种序列分类)模型,其结构为:自定义 ELMo 嵌入层 - BiLSTM - CRF。

它训练得很好。但根据预测我得到:

'TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U4') dtype('<U4') dtype('<U4')'.

注意:U4 是无符号整数。

a similar issue here ,建议“使用预测时,test_data 应该与 type(training_data[0]) 具有相同的数据类型,并且它将返回 type(training_labels[0]) 的数据类型”。我已经确认,是的,我的每个测试样本与training_data[0]的类型相同。

完整的错误消息位于本文末尾。

注意:该问题可能与我之前需要将训练和测试数据更改为 np.strings 相关,使用:

X_train_sents = np.array(X_train_sents, dtype=np.str)
y_train_sents = np.array(y_train_sents, dtype=np.str)

这是为了避免模型构建过程中出现错误,即:str没有属性ndim。如果我不将测试数据转换为 np.str,我会再次收到此错误。

一位同事认为问题出在 Keras 深处的某个 add 方法(参见错误)。显然这是一种处理无符号整数的特殊添加方法,它不应该引起这样的问题。

自定义层松散地基于 this person's repository

要重现错误:我已经使用代码和一些虚拟数据设置了一个 github 存储库 here

完整错误:

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-15-f71c3fcdc6d2> in <module>
16 print(type(X_train_sents[0]))
17 print(type(X_test_sents[0]))
---> 18 test_pred = model.predict(X_test_sents, y_test)

~/.conda/envs/base_munroke/lib/python3.7/site-packages/keras/engine/training.py in predict(self, x, batch_size, verbose, steps)
1167 batch_size=batch_size,
1168 verbose=verbose,
-> 1169 steps=steps)
1170
1171 def train_on_batch(self, x, y,

~/.conda/envs/base_munroke/lib/python3.7/site-packages/keras/engine/training_arrays.py in predict_loop(model, f, ins, batch_size, verbose, steps)
280 # Sample-based predictions.
281 outs = []
--> 282 batches = make_batches(num_samples, batch_size)
283 index_array = np.arange(num_samples)
284 for batch_index, (batch_start, batch_end) in enumerate(batches):

~/.conda/envs/base_munroke/lib/python3.7/site-packages/keras/engine/training_utils.py in make_batches(size, batch_size)
367 A list of tuples of array indices.
368 """
--> 369 num_batches = (size + batch_size - 1) // batch_size # round up
370 return [(i * batch_size, min(size, (i + 1) * batch_size))
371 for i in range(num_batches)]

TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U4') dtype('<U4') dtype('<U4')

最佳答案

更新,我找到了解决方案:我错误地将 y 集转换为 np.str,例如

y_train = np.array(y_train, dtype=np.str)

我确实需要将 y 集转换为数组,但将 dtype=np.str 添加到该行只是一个疏忽。

我希望我的痛苦能给别人带来一些帮助! :)

关于python - Keras PREDICTION 抛出 'TypeError: ufunc ' add' 不包含签名匹配类型 dtype ('<U4' ) dtype ('<U4' ) dtype ('<U4' )' 的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56967705/

24 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com