"SparseTensor"对象不支持下标操作 keras

8

在学习机器学习之后,我现在正在学习神经网络,并被布置了一个任务-使用神经网络进行文本分类。

以下是我目前所学到的:

  1. 处理数据
  2. 计数向量化

现在我试图编译神经网络,但我遇到了如下错误:

TypeError: 'SparseTensor'对象不可订阅 Traceback (most recent call last): File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/script_ops.py", line 242, in call return func(device, token, args) File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/script_ops.py", line 131, in call

我的数据形状如下:

X_train.shape = (17621, 8014)

type(X_train) = scipy.sparse.csr.csr_matrix

这个模型

model = Sequential()
model.add(Dense(1015, input_shape=(17621, 8014) , activation = 'relu'))
model.add(Dense(5, activation = 'sigmoid'))
model.add(Dense(1,activation='sigmoid'))
model.compile(loss = 'binary_crossentropy',metrics = ['accuracy'], optimizer = 'adam')
model.fit(x=X_train, y=y_train,epochs=500,batch_size=125,
          validation_data=(X_test,y_test))

另外,我还有两个问题:

  1. input_shape和Input_dimmension之间有什么区别?
  2. 当我添加第一个层时,应该设置多少个感知器?
  3. 最重要的是,我做错了什么?

请随意提出更多建议。


我无法重现你的错误。你使用的是哪个版本的Tensorflow? - Marcus
谢谢@Marcus,我找到了解决方案。似乎tensorflow.keras不能与scipy.sparse.csr.csr_matrix一起使用,然后我使用np.array就可以正常工作了。 - Marvin Raudez
1个回答

5

Keras无法处理csr_matrix类型的数据。需先将其转换为numpy数组。

X_train = X_train.toarray()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接