我想基于使用TfidfVectorizer的矢量化单词进行多标签分类(20个不同的输出标签) . 我有39974行,每行包含2739项(零或1) .
我想使用Keras模型对这些数据进行分类,该模型将包含1个隐藏层(约20个激活='relu'的节点)和输出层等于20个可能的输出值(激活='softmax'以选择最佳拟合) .
到目前为止,这是我的代码:
model = Sequential()
model.add(Dense(units=20, activation='relu', input_shape=tfidf_matrix.shape))
model.add(Dense(units=20, activation='softmax'))
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(tfidf_matrix, train_data['cuisine_id'], epochs=10)
但得到了错误:
ValueError:检查输入时出错:期望的dense_1_input有3个维度,但是有形状的数组(39774,2739)
如何指定此NN以适合使用此矩阵?
1 回答
行数(训练样本的数量)不是网络输入形状的一部分,因为训练过程每个批次向网络提供一个样本(或者更确切地说,每批次的批量调整样本) .
所以在你的情况下,网络的输入形状是
(2739, )
,正确的代码应该是这样的: