我有一個Scipy稀疏CSR矩陣,它是從SVM-Light格式的稀疏TF-IDF特徵矩陣創建的。功能的數量是巨大的,它是稀疏的,所以我必須使用SparseTensor,否則它太慢了。Scipy稀疏CSR矩陣到TensorFlow SparseTensor - 小批量梯度下降
例如,功能數爲5,和樣本文件可以是這樣的:
0 4:1
1 1:3 3:4
0 5:1
0 2:1
解析後,訓練集是這樣的:
trainX = <scipy CSR matrix>
trainY = np.array([0,1,00])
我有兩個重要問題:
1)我如何有效地將它轉換爲SparseTensor(sp_ids,sp_weights),以便使用lookup執行快速乘法(WX):https://www.tensorflow.org/versions/master/api_docs/python/nn.html#embedding_lookup_sparse
2)如何隨機化每個時期的數據集並重新計算sp_ids,sp_weights以便我可以爲小批量梯度下降進料(feed_dict)。
像邏輯迴歸這樣的簡單模型的示例代碼將非常感謝。圖表將如下:
# GRAPH
mul = tf.nn.embedding_lookup_sparse(W, X_sp_ids, X_sp_weights, combiner = "sum") # W.X
z = tf.add(mul, b) # W.X + b
cost_op = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(z, y_true)) # this already has built in sigmoid apply
train_op = tf.train.GradientDescentOptimizer(0.05).minimize(cost_op) # construct optimizer
predict_op = tf.nn.sigmoid(z) # sig(W.X + b)
你有沒有找到一個更有效的解決方案呢? – Alt