this tutorialをテンソルフローの最新バージョン、つまり0.12に更新しようとしていました。カスタムモデル関数定義の不具合を突き止めてlstmモデルをトレーニングしました。カスタムTensorflowモデル関数でグローバルステップがインクリメントしないのはなぜですか
def _lstm_model(X, y):
stacked_lstm = tf.nn.rnn_cell.MultiRNNCell(
lstm_cells(rnn_layers),
state_is_tuple=True)
global_step = tf.Variable(0, trainable=False)
X = tf.cast(X, tf.float32)
y = tf.cast(y, tf.float32)
x_ = tf.unpack(X, axis=1, num=time_steps)
output, layers = tf.nn.rnn(stacked_lstm, x_, dtype=dtypes.float32)
output = dnn_layers(output[-1], dense_layers)
(predictions, loss) = learn.models.linear_regression(output, y)
if optim == 'Adagrad':
print("using AdagradOptimizer")
optimizer = tf.train.AdagradOptimizer(learning_rate)
else:
optimizer = tf.train.GradientDescentOptimizer(learning_rate)
train_op = optimizer.minimize(
loss,
global_step=global_step)
return (predictions, loss, train_op)
私は両方の世界のステップを指定して、それを指定しないで試してみた - と私は同じ結果になってしまっている - ステップは、最適化された損失を0のままであり、私はスクリプト全体を停止するまでこれが続きます。以下のコードは、私がEstimatorを作成してモデルに適合させるために使用するコードです。
regressor = learn.SKCompat(learn.Estimator(
model_fn=lstm_model(TIMESTEPS,
RNN_LAYERS,
DENSE_LAYERS,
optim='Adagrad',
learning_rate=0.03)))
regressor.fit(x=X['train'],
y=y['train'],
batch_size=BATCH_SIZE,
steps=TRAINING_STEPS
)