2016-12-15 8 views
1

Estimatorを使用してLSTMネットワークを構築しようとしています。 lstm_model機能がEstimatorを使用してLSTMネットワークを構築する

def lstm_model(features, targets, mode, params): 

    def lstm_cells(layers): 
     if isinstance(layers[0], dict): 
      return [tf.nn.rnn_cell.BasicLSTMCell(layer['steps'],state_is_tuple=True) for layer in layers] 
     return [tf.nn.rnn_cell.BasicLSTMCell(steps, state_is_tuple=True) for steps in layers] 

    stacked_lstm = tf.nn.rnn_cell.MultiRNNCell(lstm_cells(params['rnn_layers']), state_is_tuple=True) 
    output, layers = tf.nn.rnn(stacked_lstm, [features], dtype=tf.float32) 
    return learn.models.linear_regression(output, targets) 

とのparamsは、その後、私は

model_params = { 
    'steps': 1000, 
    'learning_rate': 0.03, 
    'batch_size': 24, 
    'time_steps': 3, 
    'rnn_layers': [{'steps': 3}], 
    'dense_layers': [10, 10] 
} 

であり、ある

regressor = learn.Estimator(model_fn=lstm_model, 
          params=model_params, 
          ) 

:私は見積もりを使用しています

X = [[1,2,3], [2,3,4], ... , [98,99,100]] 
y = [2, 3, ... , 99] 

のように私のデータが見えますフィッティング

regressor.fit(X, y) 

私が直面しています問題は

output, layers = tf.nn.rnn(stacked_lstm, [features], dtype=tf.float32) 

である配列を必要としますが、私はテンソルのリストに私に機能を分割する方法がわからないです。 lstm_model関数内のフィーチャの形状は(?、3)

2つの質問がありますが、どのようにバッチでトレーニングを行うのですか?どのように 'フィーチャー'を分割するのですか

output, layers = tf.nn.rnn(stacked_lstm, [features], dtype=tf.float32) 

はスローされず、エラーになりません。私は取得していますエラーが0.12

答えて

0

が、私はその後、機能が するために形状を設定する必要がありました(BATCH_SIZE、time_step、1)または(なし、time_step、1)とtensorflow私が使用しています

raise TypeError("%s that don't all match." % prefix) 
TypeError: Tensors in list passed to 'values' of 'Concat' Op have types [float64, float32] that don't all match. 

ですrnnに入るために機能をアンスタックします。タイムステップのサイズと各テンソルの形状のテンソルのリストを持つように、time_stepのフィーチャをアンスタッキングする(None、1)または(batch_size、1)

関連する問題