如何为ELMO嵌入模型调整训练和测试集的正确维度

我在使用维度为x_tr=(43163, 50)和y_tr=(43163, 50, 1)的训练集拟合ELMO嵌入模型时遇到了错误,如下所示:

InvalidArgumentError: Incompatible shapes: [1600] vs. [32,50]     [[{{node metrics/acc/Equal}} = Equal[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](metrics/acc/Reshape, metrics/acc/Cast)]].

如何解决这个错误?

我尝试通过使训练样本可被批量大小整除来解决这个问题。

用于拟合模型的训练集:

X_tr=np.array(X_tr)print(X_tr.shape)y_tr = np.array(y_tr).reshape(len(y_tr), max_len, 1)print(y_tr.shape)(43163, 50)(43163, 50, 1)

构建模型:

input_text = Input(shape=(max_len,), dtype=tf.string)embedding = Lambda(ElmoEmbedding, output_shape=(None, 1024))(input_text)x = Bidirectional(LSTM(units=512, return_sequences=True,                       recurrent_dropout=0.2, dropout=0.2))(embedding)x_rnn = Bidirectional(LSTM(units=512, return_sequences=True,                           recurrent_dropout=0.2, dropout=0.2))(x)x = add([x, x_rnn])  # 残差连接到第一个双向LSTMout = TimeDistributed(Dense(n_tags, activation="softmax"))(x)model = Model(input_text, out)

编译模型:

model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])

拟合模型:

fit_model = model.fit(np.array(X_tr), np.array(y_tr).reshape(len(y_tr), max_len, 1), validation_split=0.1,                    batch_size=batch_size, epochs=5, verbose=1)

错误:

    InvalidArgumentError: Incompatible shapes: [1600] vs. [32,50]     [[{{node metrics/acc/Equal}} = Equal[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](metrics/acc/Reshape, metrics/acc/Cast)]]预期结果可能是:在38816个样本上训练,在4320个样本上验证Epoch 1/538816/38816 [==============================] - 433s 11ms/step - loss: 0.0625 - acc: 0.9818 - val_loss: 0.0459 - val_acc: 0.9858Epoch 2/538816/38816 [==============================] - 430s 11ms/step - loss: 0.0404 - acc: 0.9869 - val_loss: 0.0421 - val_acc: 0.9865Epoch 3/538816/38816 [==============================] - 429s 11ms/step - loss: 0.0334 - acc: 0.9886 - val_loss: 0.0426 - val_acc: 0.9868Epoch 4/538816/38816 [==============================] - 429s 11ms/step - loss: 0.0275 - acc: 0.9904 - val_loss: 0.0431 - val_acc: 0.9868Epoch 5/538816/38816 [==============================] - 430s 11ms/step - loss: 0.0227 - acc: 0.9920 - val_loss: 0.0461 - val_acc: 0.9867

回答:

已解决:我通过移除metrics=[‘accuracy’]解决了这个问题,但为什么这个准确率指标会导致错误我仍然不清楚。如果有人知道,请帮助我解答。

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注