ldr*_*vic 9 python machine-learning neural-network keras
我想使用TfidfVectorizer基于矢量化单词进行多标签分类(20个不同的输出标签)。我设置了39974行,每行包含2739项(零或一)。
我想使用Keras模型对该数据进行分类,该模型将包含1个隐藏层(〜20个节点,带有activation ='relu'),输出层等于20个可能的输出值(其中,activation ='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)
Run Code Online (Sandbox Code Playgroud)
但是出现了错误:
ValueError:检查输入时出错:预期density_1_input具有3维,但数组的形状为(39774,2739)
如何使用该矩阵指定该NN以适合?
小智 8
行数(训练样本数)不是网络输入形状的一部分,因为训练过程每批次向网络馈入一个样本(或更精确地说,每批次的batch_size个样本)。
因此,在您的情况下,网络的输入形状是(2739, )正确的代码应如下所示:
model = Sequential()
# the shape of one training example is
input_shape = tfidf_matrix[0].shape
model.add(Dense(units=20, activation='relu', input_shape=input_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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15110 次 |
| 最近记录: |