labels = ["Synonym", "Antonym", "Not relevant", "Synonym", "Antonym"]
有3种不同的标签,我想先将它们分别引用到数字1,2和3,然后从它们中构建一个热向量,例如标签3-> 0 0 1我拥有的功能数组,这比训练不起作用。
def label_to_onehot(labels):
mapping = {label: i for i, label in enumerate(set(labels))}
one_hot = []
for label in labels:
entry = [0] * len(mapping)
entry[mapping[label]] = 1
one_hot.append(entry)
return one_hot
这就是我得到的:
ValueError:检查模型目标时出错:传递给模型的Numpy数组列表不是模型的大小 预期。预计会看到1个数组,但得到了以下内容 165757个数组的列表:[array([[0], [0], [1]]),数组([[1], [0], [0]]),数组([[0], [1],
答案 0 :(得分:1)
Keras期望使用(batch_size, classes)
形状的numpy数组。但是您将输入作为python列表提供,但没有shape
属性来检索批处理大小和类。因此,即使大小正确但类型错误。
一种可能的解决方案是: 其中a是您的映射索引,c是类总数。
def one(a, c):
out = []
for i in a:
entry = [0 for i in range(c)]
entry[i] = 1
out.append(entry)
return np.array(out)
或者,您也可以在to_categorical
中使用keras.utils
from keras.utils import to_categorical
a = to_categorical(a, c)