2017-07-15 10 views
0

私は、特定のサンプリング規則に従ってデータセットからサンプリングされた多くのトレーニング画像をネットワークに供給したいと考えています。MxNetデータイテレータでのシーケンシャル対ランダムアクセスのI/Oパフォーマンスの違いは?

  1. .recファイルに.LSTファイルを変換し、それをアクセスするために、シーケンシャルDataIterを使用し、その後、オフラインイメージのリストを生成するためのサンプリング・ロジックを使用します。今私は2つの選択肢があります。

  2. 画像をオンラインでサンプリングできる独自の子クラスのDataIterを作成します。その結果、クラスはMXIndexedRecordIOから継承したランダムアクセスをサポートする必要があります。元のデータセットに対して.recファイルを作成する必要があります。

私の直感は、.recファイルのランダムアクセスよりもシーケンシャルアクセスが速いことを示しています。しかし、その違いが私自身のイテレータクラスを作成しテストするのに費やす時間が足りるほど大きいかどうかはわかりません。誰も私にこのことのヒントを教えてもらえますか?

+0

あなたは、おそらくあなたは、ランダムアクセスイテレータを使用している場合は、同じデータの繰り返しを避けるために入力をシャッフルします。これを行うと、シーケンシャルアクセスが戻され、最適化のオプションが提供されます。 – Guy

答えて

0

あなたの場合は、MXRecordIOを使用してイメージをプレパックする方が良いです。これにより、パフォーマンスが向上し、データセットの処理方法の一貫性が導入されます。

それは順序があなたが、その後順番に.recを反復するmxnet.image.ImageIterを使用することができます

を大事リストとして.recファイル内のファイルを保存します。

http://mxnet.io/api/python/io.html#mxnet.image.ImageIter

0

これはパフォーマンスに関する質問ですから、あなたのネットワークがイメージを処理する速度に依存し、どのハードウェアでトレーニングを実行しているかによって異なります。

関連する問題