检查输入时出错:预期dense_1_input 具有形状(3773,) 但得到形状为(111,) 的数组

迪米特里·费利克斯

我想用 keras 对电子邮件进行分类,我已经有包含电子邮件的文件夹,所以我希望 keras 识别一个模型,该模型根据我已经分类的内容预测将未分类的电子邮件放在哪里。

所以我阅读了所有邮件并用熊猫创建了一个两列的数据框,一个是邮件中所有单词的列表,另一个是它所属的文件夹。

之后,我创建x_trainy_trainx_test以及y_test培训和评估我的代码。这给了我很好的结果,所以我想通过执行相同的方法对未分类的电子邮件进行分类,读取邮件对其进行标记,然后使用 pd.get_dummies 然后将其转换为一个 numpy 数组。

因为看起来预测调用只能处理 numpy 列表或 numpy 数组。

这就是问题所在,矩阵不同,因为非分类邮件中的单词数和我的数据集不同,导致形状不同,因此出现错误,我想知道如何解决。

我尝试使用,OneHotEncoder但我不知道是不是我使用它的方式,但它失败了

#lst = each row contains all the word of the folder in the list2
#lst2 = each row contains the path to a folder

data = pd.DataFrame(list(zip(lst, lst2)), columns=['text', 'folder'])

train_size = int(len(data) * .8)
train_posts = data['text'][:train_size]
train_tags = data['folder'][:train_size]

test_posts = data['text'][train_size:]
test_tags = data['folder'][train_size:]

model = Sequential()
model.add(Dense(16, input_shape=(vocab_size,)))
model.add(Activation('elu'))
model.add(Dropout(0.2))
model.add(Dense(32))
model.add(Activation('elu'))
model.add(Dropout(0.2))
model.add(Dense(16))
model.add(Activation('elu'))
model.add(Dropout(0.2))
model.add(Dense(num_labels))
model.add(Activation('sigmoid'))
model.summary()

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(x_train, y_train, batch_size=batch_size, epochs=100, verbose=1, validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, batch_size=batch_size, verbose=1)

#read the non-classified mails

sentences = read_files("mail.eml")
sentences = ' '.join(sentences)
sentences = sentences.lower()
salut = unidecode.unidecode(sentences)
salut = text_to_word_sequence(salut)
salut = np.array(pd.get_dummies(salut).values)

pred = model.predict_classes(salut, batch_size=batch_size, verbose=1)

训练结果:3018/3018 [==============================] - 0s 64us/step - loss: 0.0215 - acc:0.9949 - val_loss:0.0217 - val_acc:0.9950

ValueError:检查输入时出错:预期dense_1_input具有形状(3773,)但得到形状为(111,)的数组

我总共使用了 3773 个单词,我将它们分成 x_train 和 x_test 训练长度是 3773 的 80% 所以 3018 其余 (775) 用于测试

traning_time(适合)

3018/3018 [==============================] - 0s 67us/step - loss: 0.0225 - acc: 0.9950 - val_loss :0.0221 - val_acc:0.9950

test_time(评估)

755/755 [==============================] - 0s 25us/步

评估结果

测试分数:0.022089334732748024 测试准确度:0.9950132541309129

我忘了说 read_files 调用只是我做的一个函数,它读取文件并返回邮件中所有单词的列表

我测试通过添加尽可能多的列(全零)来匹配 3773 长度来完成长度 111 的矩阵,这确实有效,但矩阵肯定是错误的,这给了我很差的结果,而我有很高的“准确度” " 和 "val_accuracy"

如果您知道如何解决,请说出您的任何想法

迪米特里·费利克斯

我解决了导致两个矩阵之间的 lengtg 问题的问题,因为我在标记非机密邮件和其他邮件时没有使用相同的字典。

所以如果有人遇到这个问题,你需要在所有程序中使用相同的标记器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ValueError:检查输入时出错:预期dense_1_input有2维,但得到了形状为(60000, 28, 28)的数组

来自分类Dev

检查输入时出错:预期density_203_input具有形状(1202),但数组形状为(1,)

来自分类Dev

ValueError:检查输入时出错:预期density_13_input具有形状(3,),但数组的形状为(1,)

来自分类Dev

检查输入时出错:预期embedding_Embedding1_input具有形状[,1103],但得到形状为[1103,1]的数组

来自分类Dev

检查输入时出错:预期 conv2d_1_input 具有形状 (64, 64, 3) 但得到形状为 (64, 64, 4) 的数组

来自分类Dev

ValueError:检查输入时出错:预期 conv2d_9_input 具有形状 (64, 64, 3) 但得到形状为 (32, 32, 1) 的数组

来自分类Dev

ValueError:检查时出错:预期dense_1_input有2维,但得到形状为(1, 16, 16, 512)的数组

来自分类Dev

简单的机器学习算法不起作用:ValueError:检查输入时出错:预期dense_4_input具有形状(无,5)但得到形状为(5,1)的数组

来自分类Dev

检查目标时出错:预期dense_8 具有形状(2,) 但得到形状为(1,) 的数组

来自分类Dev

ValueError:检查目标时出错:预期dense_2具有形状(1,)但得到形状为(14,)的数组

来自分类Dev

ValueError:检查输入时出错:预期conv2d_1_input具有形状(224,224,1),但数组的形状为(224,224,8)

来自分类Dev

ValueError:检查输入时出错:预期conv2d_5_input具有形状(6705,20,130),但数组形状为(20,130,1)

来自分类Dev

检查目标时:预期dense_2 具有形状(1,) 但得到形状为(2,) 的数组

来自分类Dev

ValueError:检查输入时出错:预期 lstm_1_input 有 3 个维度,但得到了具有形状的数组 (393613, 50)

来自分类Dev

检查目标时出错:预期 activation_1 具有形状 (1,) 但得到形状为 (10,) 的数组

来自分类Dev

ValueError:检查目标时出错:预期输出具有形状 (1,) 但得到形状为 (2,) 的数组

来自分类Dev

ValueError:检查目标时出错:预期 c_acti 具有形状 (10,) 但得到形状为 (1,) 的数组

来自分类Dev

Keras检查输入时出错:预期input_4具有形状(299、299、3),但数组具有形状(64、64、3)

来自分类Dev

Model.fit() ValueError:检查模型目标时出错:预期dense_21 具有形状(无,1)但得到具有形状的数组(1708、66)

来自分类Dev

嵌入输入形状时出错:预期embedding_1_input具有形状(25,),但数组的形状为(1,)

来自分类Dev

python 3.x Keras ValueError:检查目标时出错:预期seq_input具有形状(无,2)但得到形状为(16,1)的数组

来自分类Dev

Python-Tensorflow-LSTM-ValueError:检查模型目标时出错:预期dense_16具有形状(无,100)但得到形状为(16、2)的数组

来自分类Dev

ValueError:检查输入时出错:预期input_2的形状为(8,),但数组的形状为(1,)

来自分类Dev

如何修复:ValueError:检查输入时出错:预期conv2d_130_input具有形状(1,512,512)但具有形状(79,512,512)的数组

来自分类Dev

ValueError:检查输入时出错:预期lstm_13_input具有3维,但数组的形状为(1,1)

来自分类Dev

Keras CNN:检查输入时出错:预期 conv1d_46_input 具有 3 个维度,但得到了形状为 (3780, 6) 的数组

来自分类Dev

ValueError:检查目标时出错:预期dense_10具有形状(1,),但数组具有形状(19316,)

来自分类Dev

ValueError:检查模型目标时出错:预期 activation_2 具有形状 (None, 761, 1) 但得到形状为 (1, 779, 1) 的数组

来自分类Dev

ValueError:检查输入时出错:预期conv2d_input具有4维,但数组的形状为(None,1)

Related 相关文章

  1. 1

    ValueError:检查输入时出错:预期dense_1_input有2维,但得到了形状为(60000, 28, 28)的数组

  2. 2

    检查输入时出错:预期density_203_input具有形状(1202),但数组形状为(1,)

  3. 3

    ValueError:检查输入时出错:预期density_13_input具有形状(3,),但数组的形状为(1,)

  4. 4

    检查输入时出错:预期embedding_Embedding1_input具有形状[,1103],但得到形状为[1103,1]的数组

  5. 5

    检查输入时出错:预期 conv2d_1_input 具有形状 (64, 64, 3) 但得到形状为 (64, 64, 4) 的数组

  6. 6

    ValueError:检查输入时出错:预期 conv2d_9_input 具有形状 (64, 64, 3) 但得到形状为 (32, 32, 1) 的数组

  7. 7

    ValueError:检查时出错:预期dense_1_input有2维,但得到形状为(1, 16, 16, 512)的数组

  8. 8

    简单的机器学习算法不起作用:ValueError:检查输入时出错:预期dense_4_input具有形状(无,5)但得到形状为(5,1)的数组

  9. 9

    检查目标时出错:预期dense_8 具有形状(2,) 但得到形状为(1,) 的数组

  10. 10

    ValueError:检查目标时出错:预期dense_2具有形状(1,)但得到形状为(14,)的数组

  11. 11

    ValueError:检查输入时出错:预期conv2d_1_input具有形状(224,224,1),但数组的形状为(224,224,8)

  12. 12

    ValueError:检查输入时出错:预期conv2d_5_input具有形状(6705,20,130),但数组形状为(20,130,1)

  13. 13

    检查目标时:预期dense_2 具有形状(1,) 但得到形状为(2,) 的数组

  14. 14

    ValueError:检查输入时出错:预期 lstm_1_input 有 3 个维度,但得到了具有形状的数组 (393613, 50)

  15. 15

    检查目标时出错:预期 activation_1 具有形状 (1,) 但得到形状为 (10,) 的数组

  16. 16

    ValueError:检查目标时出错:预期输出具有形状 (1,) 但得到形状为 (2,) 的数组

  17. 17

    ValueError:检查目标时出错:预期 c_acti 具有形状 (10,) 但得到形状为 (1,) 的数组

  18. 18

    Keras检查输入时出错:预期input_4具有形状(299、299、3),但数组具有形状(64、64、3)

  19. 19

    Model.fit() ValueError:检查模型目标时出错:预期dense_21 具有形状(无,1)但得到具有形状的数组(1708、66)

  20. 20

    嵌入输入形状时出错:预期embedding_1_input具有形状(25,),但数组的形状为(1,)

  21. 21

    python 3.x Keras ValueError:检查目标时出错:预期seq_input具有形状(无,2)但得到形状为(16,1)的数组

  22. 22

    Python-Tensorflow-LSTM-ValueError:检查模型目标时出错:预期dense_16具有形状(无,100)但得到形状为(16、2)的数组

  23. 23

    ValueError:检查输入时出错:预期input_2的形状为(8,),但数组的形状为(1,)

  24. 24

    如何修复:ValueError:检查输入时出错:预期conv2d_130_input具有形状(1,512,512)但具有形状(79,512,512)的数组

  25. 25

    ValueError:检查输入时出错:预期lstm_13_input具有3维,但数组的形状为(1,1)

  26. 26

    Keras CNN:检查输入时出错:预期 conv1d_46_input 具有 3 个维度,但得到了形状为 (3780, 6) 的数组

  27. 27

    ValueError:检查目标时出错:预期dense_10具有形状(1,),但数组具有形状(19316,)

  28. 28

    ValueError:检查模型目标时出错:预期 activation_2 具有形状 (None, 761, 1) 但得到形状为 (1, 779, 1) 的数组

  29. 29

    ValueError:检查输入时出错:预期conv2d_input具有4维,但数组的形状为(None,1)

热门标签

归档