在Keras中使用稀疏输入和Tensorflow

时间:2017-10-05 06:29:22

标签: numpy tensorflow keras

我正在尝试将稀疏numpy矩阵用于具有张量流作为后端的keras。模型编译但适合时会出错。代码如下。任何帮助表示赞赏。

from keras.layers import Dense, Input
from keras.models import Model
inputs = Input(shape=(trainX.shape[1],), sparse=True)
outputs = Dense(trainY.shape[1], activation='softmax')(inputs)
model = Model(inputs=inputs, outputs=outputs)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

trainX是

<2404941x337071 sparse matrix of type '<type 'numpy.float64'>'
with 4765705 stored elements in Compressed Sparse Row format>

和类似的trainY是CSR矩阵

model.fit(trainX, trainY, verbose=1)

给出以下错误

ValueError: setting an array element with a sequence.

1 个答案:

答案 0 :(得分:0)

如果编写自定义训练循环,则可以将稀疏矩阵用作Keras模型的输入。 在下面的示例中,该模型以稀疏矩阵作为输入,并输出一个密集矩阵。

RData

从您的示例来看,您似乎也希望输出也是一个稀疏矩阵。这更加困难,因为您的模型需要输出稀疏矩阵,并且损失必须可以用稀疏矩阵计算。而且,我相信Keras尚不支持稀疏输出。