我正在使用Keras构建一个LSTM模型。我使用TfidVectorizer()将我的数据帧转换为单词标记。 tfidvectorizer()的transform方法返回csr_matrix,当我输入LSTM层时,我总是得到一个错误
" ValueError:输入0与图层lstm_1不兼容:预期ndim = 3,找到ndim = 2"
下面是我的python代码
Movie.create(movieObj, function(err, _){
console.log(err)
})
我是ML世界的新手,请帮助找出我在这里做错了什么。 可以提前感谢。
答案 0 :(得分:0)
我已经将稀疏矩阵转换为数组并改变了它的尺寸,然后它完美地工作了。
这是完整的代码。
dfTest = pd.read_csv("C:\\ML\\test.csv",
dtype={'url': np.str, 'name': np.str, 'verdict': np.int32},
error_bad_lines = False, sep=',', delimiter=',', header=0,
names=['url', 'name', 'verdict'])
dataFrame = dfTest['url'] + " "+ dfTest['name']
target = dfTest['verdict']
tk1 = TfidfVectorizer(max_features = 1000);
tk1.fit(dataFrame)
matrix = tk1.transform(dataFrame)
matrix = matrix.toarray()
data = np.reshape(matrix, matrix.shape + (1,))
target = np.reshape(target, target.shape + (1,))
print(target)
print(data.shape)
model1 = Sequential()
model1.add(LSTM(128, dropout_W=0.2, dropout_U=0.2, input_shape=
data.shape[1:]))
model1.add(Dense(1))
model1.add(Activation('sigmoid'))
model1.compile(loss='binary_crossentropy', optimizer='rmsprop')
model1.fit(data, y=target, batch_size=200, nb_epoch=5, verbose=1,
validation_split=0.2, shuffle=True)