Ama*_*yan 7 nlp machine-learning text-classification tf.keras tensorflow2.0
我正在使用 bert-for-tf2 库来解决多类分类问题。我创建了模型,但训练会引发以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-25-d9f382cba5d4> in <module>()
----> 1 model.fit([INPUT_IDS,INPUT_MASKS,INPUT_SEGS], list(train.SECTION))
5 frames
/tensorflow-2.0.0/python3.6/tensorflow_core/python/keras/engine/data_adapter.py in
__init__(self, x, y, sample_weights, batch_size, epochs, steps, shuffle, **kwargs)
243 label, ", ".join([str(i.shape[0]) for i in nest.flatten(data)]))
244 msg += "Please provide data which shares the same first dimension."
--> 245 raise ValueError(msg)
246 num_samples = num_samples.pop()
247
ValueError: Data cardinality is ambiguous:
x sizes: 3
y sizes: 6102
Please provide data which shares the same first dimension.
Run Code Online (Sandbox Code Playgroud)
我指的是名为Simple BERT using TensorFlow 2.0的中等文章 可在此处找到库 bert-for-tf2 的 git repo 。
请在此处找到完整代码。
这是我的 colab 笔记本的链接
真的很感谢你的帮助!
小智 1
遇到同样的问题,不知道为什么输入和输出的数量应该相同,当 x.shape[0] != y.shape[0] 时,此错误似乎是从数据适配器之一引发的,在这种情况下
x = [INPUT_IDS,INPUT_MASKS,INPUT_SEGS]
y = list(train.SECTION)
Run Code Online (Sandbox Code Playgroud)
所以而不是
model.fit([INPUT_IDS,INPUT_MASKS,INPUT_SEGS], list(train.SECTION))
Run Code Online (Sandbox Code Playgroud)
尝试在带有层名称的字典中提供输入和输出(检查模型摘要(也可以明确给出合适的名称)),对我有用
model.fit(
{
"input_word_ids": INPUT_IDS,
"input_mask": INPUT_MASKS,
"segment_ids": INPUT_SEGS,
},
{"dense_1": list(train.SECTION)}
)
Run Code Online (Sandbox Code Playgroud)
请确保输入和输出是 numpy 数组,例如:使用 np.asarray(),它查找 .shape 属性
归档时间: |
|
查看次数: |
18615 次 |
最近记录: |