1
私は、適応学習率とAdamグラジエントベースの最適化を使用して畳み込みニューラルネットを実装しようとしています。セッションを実行するため固定スケジュールの適応学習率
# learning rate schedule
schedule = np.array([0.0005, 0.0005,
0.0002, 0.0002, 0.0002,
0.0001, 0.0001, 0.0001,
0.00005, 0.00005, 0.00005, 0.00005,
0.00001, 0.00001, 0.00001, 0.00001, 0.00001, 0.00001, 0.00001, 0.00001])
# define placeholder for variable learning rate
learning_rates = tf.placeholder(tf.float32, (None),name='learning_rate')
# training operation
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=logits,
labels=one_hot_y)
loss_operation = tf.reduce_mean(cross_entropy)
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rates)
training_operation = optimizer.minimize(loss_operation)
コード:私は、次のコードを持っている
.
.
.
_, loss = sess.run([training_operation, loss_operation],
feed_dict={x: batch_x, y: batch_y, learning_rate: schedule[i]})
.
.
.
私はそれが技術的にスケジュールの最初の値を使用する必要がありますので、0に初期化されたエポック数を表します。
私はこれを実行しようとするたびに、私は次のエラーを取得する:
InvalidArgumentError:あなたはDTYPEフロート [[ノードでのプレースホルダテンソル 'learning_rate_2' の値養う必要があります。learning_rate_2 = Placeholderdtype = DT_FLOAT、形状を= [ ]、_device = "/ job:localhost/replica:0/task:0/cpu:0"]]
誰も同じ問題がありましたか?私はセッションを再初期化しようとしましたが、変数の名前を変更しましたが役に立たなかった。
これを試して、セッション内でスケジュールを定義してください –
こんにちはアリ、どちらもうまくいきませんでしたが、別の場所を見つけました。 learning_ratesプレースホルダを削除し、オプティマイザ変数をトレーニングループにコピーしました。非常に優雅ではないが、それは動作します。 – stevensallright