0

ネット (AlexNet/GoogleNet/ImageNet) の出力レイヤーの変更について質問があります。したがって、標準出力は 1x1000 ベクトルなので、クラスごとに 1 つの値になります。

出力をたとえば 5 に変更できることはわかっているので、クラスが 5 つしかない場合は 1x5 ベクトルを取得します。

しかし、クラスがない場合はどうなりますか? 出力を 18x18 のようなマトリックスに変更することは可能ですか。私のネットは「クラス」ではなく密度マップを出力する必要があるためです。また、タスクに事前トレーニング済みのネットを使用することをお勧めしますか、それともゼロからトレーニングする必要がありますか?

ご協力ありがとうございました :-)

4

1 に答える 1

6

しかし、クラスがない場合はどうなりますか?

「クラス」の概念は、実際にはアーキテクチャに関連しているのではなく、損失関数自体に関連しています。言い換えれば、1000 個の出力がある場合、1000 個のばらばらなクラス間で分類するか、1000 個のタグを割り当てるか、1000 次元の実際の出力に回帰するかは問題ではありません。アーキテクチャは依然として完全に理にかなっています。

出力を 18x18 のようなマトリックスに変更することは可能ですか?

「素朴な」アプローチは、18*18 = 324 の値を出力し、それを 2 次元行列として扱うことです。ただし、2-dim 構造は、アーキテクチャ側で利用できるいくつかの特性があることを示唆しています。1 つの典型的な特性は変換不変性であり、convnet で利用されます。同じことが出力に当てはまる場合は、デコンボリューション (任意のたくさんあるので、あなたのモデルに合わせて並べ替えてください。

また、タスクに事前トレーニング済みのネットを使用することをお勧めしますか? それともゼロから学ぶべきですか?

これはアーキテクチャには依存しませんが、タスクには依存しません。タスクが、特定のネットがトレーニングされたものと十分に類似している場合は、事前トレーニング済みのものを出発点として使用し、新しいものを「微調整」することができます。一般に、事前トレーニング済みのネットを開始点として使用することは安全です (最初からトレーニングするよりも悪いことではありません)。ただし、追加された部分だけでなく、ネットワーク全体をトレーニングすることを忘れないでください (構造全体をトレーニングするのに十分なデータがない場合を除きます)。

于 2016-12-22T15:40:07.750 に答える