2

ImageDataレイヤーまたはMemoryDataレイヤーの入力ソースをオンザフライで変更することはできますか?Caffeのトレーニング中に入力データレイヤーを変更する

私はエポックごとにデータをシャッフルしようとしていますが、画像と、ネットワークの後の段階で連結したい他の非画像機能の両方を持っています。私は、2つのアライメントを維持する方法で画像と他のデータの両方をシャッフルする信頼できる方法を見つけることができませんでした。

だから、私は(メモリ内の)再生成imagelist.txtだけでなく、非画像データのすべてのエポックを考え、ImageData層に新しいファイルを添付し、新しいデータでMemoryDataLayerを初期化しています。

トレーニングプロセスを再開せずに、新しいテキストファイルでネットワークを再初期化する方法を確認するにはどうすればよいですか。 (私はネットワークが同じステージ、勢いなどで訓練を続け、最初にコンパイルされたものではなく、新しいファイルから画像ファイルを読み始めます)。

layer { 
name: "imgdata" 
type: "ImageData" 
top: "imgdata" 
top: "dlabel" 
transform_param { 
    # Transform param here 
} 
image_data_param { 
source: "path to imagelist.txt" ## This file changes after n iterartions 
batch_size: XX 
new_height: XXX 
new_width: XXX 
} 
} 

と同様に、私はMemoryData層への再シャッフルデータをコピーできるようにしたいです。トレーニングの途中でNet.set_input_arraysに電話できますか?

layers { 
    name: "data" 
    type: MEMORY_DATA 
    top: "data" 
    top: "label" 
    memory_data_param { 
    batch_size: XX 
    channels: X 
    height: XXX 
    width: XXX 
    } 
+0

あなたはPythonLayerの使用を検討しましたか? – Shai

+0

コメントありがとうございました。 Pythonで書かれたレイヤーであっても、シャッフル中に画像データと非画像データをどのように整列させることができないのか分かりません。 – Prophecies

+0

あなたはPythonのレイヤー内のすべてを行うことができます。 1つのレイヤーからのすべての入力 – Shai

答えて

1

commentsで提案されているようにあなたの問題は、Python layersの助けを借りて解決することができました。 Pythonレイヤーの使用例は、hereの中にあります。

pythonスクリプト内で、アラインメントを維持して両方のデータをシャッフルするコードを書くことができます。

関連する問題