モデルをテンソルフローで実装しようとしています。ただ6つの出力ニューロンの代わりに、私は1000を持っています。私はこれを行って、事前に重み付けをしています。 CNNモデルは、1/2以上の畳み込みレイヤを追加するときに学習しません。
完全なモデルを実装しましたが、1つのレイヤー(14,14,128)しか実装しませんでした。テストのためだけに。ポルグラムが成熟したので、2つ以上のレイヤー(または1つ)を実装しました。これにより、モデルは何も学習しなくなります。損失は一定であり(小さな雑音の周り)、訓練画像上で試験された精度はランダムな推測で一定である。層を追加するためには、電車のデータセットから1000の画像サブセットで70〜80%の精度まで非常に高速に(5〜10分)得ることができました。このように、これは追加の層では当てはまりません。
w2 = weight_variable([3,3,64,128])
b2 = bias_variable([128])
h2 = tf.nn.relu(conv2d_s2(h1_pool,w2)+b2)
h2_pool = max_pool_2x2(h2)
#Starts additional layer
w3 = weight_variable([3,3,128,128])
b3 = bias_variable([128])
h3 = tf.nn.relu(conv2d_s1(h2_pool,w3)+b3)
#Ends additional layer
w5 = weight_variable([3,3,128,256])
b5 = bias_variable([256])
h5 = tf.nn.relu(conv2d_s1(h3,w5)+b5)
h5_pool = max_pool_2x2(h5)
この追加層は、モデルが無価値になります:ここで
はs1
とs2
はCONVのストライドである追加の層のためのコードです。私は成功せずに別のハイパーパラメータ(学習率、バッチサイズ、エポック)を試みました。どこに問題がありますか?
もう1つ質問があります。このサイズのネットワークを知っている人は誰でも、私はインプレメンテーションとテストを行うことができます。私の目標は、さまざまなオブジェクト(オブジェクトの画像)の把握位置を検出することですか?
私が役に立ちましたら、非常に良いゼオンでGTX 980を1台使用します。
レポジトリはhttps://github.com/tnikolla/grasp-detectionにあります。
UPDATE
問題は損失で発散しました。学習率を下げることによって解決される
オレンジ色は、プログラムが全く学習を示さなかったときの精度と損失(テンソルボードと端末)です。私は期末に示された損失にだまされました。精度と損失のログをチェックするために@harsが指摘しているように、私はテンソルボードの損失が最初のステップでばらつくことを発見しました。学習率を0,01から0,001に変更することで発散が解消され、シアンで見ることができるように、モデルは学習していました(1分間で小さな部分集合の過小評価)。
、あなたの完全なモデルのコードとトレーニングを投稿します/オプティマイザのコードとパラメータ? – hars
ここには[github](https://github.com/tnikolla/grasp-detection)リンクがあります。 – prometeu
レイヤを追加しても、最適化の問題がより困難になるため、パフォーマンスが向上するとは限りません。バッチ正規化を試してみましたか? –