【发布时间】:2019-01-13 15:30:21
【问题描述】:
对于神经网络,我需要将标签转换为一个热数组。 我有 3 个标签出现在列表中,例如:
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],
【问题讨论】:
-
尝试返回
np.array(one_hot)。您没有提及您使用的是哪个模型,但它可能需要一个数组而不是数组列表。 -
这是你运行什么时得到的??
-
这里是代码jdoodle.com/…
-
当我尝试 np.array(one_hot) 我得到: Epoch 1/7 2019-01-13 17:25:18.816043: I tensorflow/core/platform/cpu_feature_guard.cc:141] 你的 CPU支持未编译此 TensorFlow 二进制文件以使用的指令:AVX2 FMA Traceback(最近一次调用最后一次):.....ValueError: setting an array element with a sequence.
标签: python-3.x numpy machine-learning keras