0
私はコードを高速化する方法を見つけようとしています。要するに、私は予測を取得し、並べ替えてランクを出力するようなものを使用する訓練されたモデルを持っています。TensorFlow Numpyを搭載した並列CPU
def predict(feed_dict, truth):
# Feed dict contains about 10K candidates to obtain scores
pred = self.sess.run([self.mdl.predict_op], feed_dict)
pred = np.array(pred)
# With the scores, I sort them by likelihood
sort = np.argsort(pred)[::-1]
# I find the rank of the ground truth
rank = np.where(sort==truth)[0][0] + 1
return rank
しかし、このプロセスは非常に遅いです。私は約10Kのテストサンプルを持っています。私は、マルチCPU/GPUのサポートはテンソルフローオペレーションでのみ利用可能ですが、セッションはPythonの標準マルチプロセッシングライブラリではうまく動作しないと考えています。
マルチプロセッシングでこれをスピードアップする方法はありますか?あるいは、それをTFの計算グラフの一部として実装する必要がありますか?
ありがとうございます!
遅いどの部分? –
ところで、 'tf.nn.top_k(pred)[1]'は 'np.argsort'行と同じです。すべてをTFグラフに変換すると、マルチプロセスは必要ありません。並列の 'session.run'呼び出しは、同じプロセス内の異なるPythonスレッドから開始できます。 –
遅いのは、私がこの10K +回を有効なセットまたはテストセットのいずれかに呼び出さなければならないという事実から来ています。 – op10no4