0
我正在使用contrib.learn.estimator來預測tensorflow0.12環境。contrib.learn.estimator()for tensorflow0.12
#1. Use a regression Estimator, set n_classes to 0
model = skflow.SKCompat(skflow.Estimator(model_fn=lstm_model, model_dir=LOG_DIR))
#2. create a lstm instance and validation monitor
validation_monitor = skflow.monitors.ValidationMonitor(X, y,
every_n_steps=steps,
early_stopping_rounds=1000)
#3. fit the model
model.fit(X_train, y_train, monitors=[validation_monitor], steps=steps)
#4. Predict
y_train_predicted = model.predict(X_train)
和LSTM模型
def lstm_model(X, y):
X = tf.reshape(X, [-1, n_steps, n_input]) #batch_size,n_steps,n_input
#permute n_steps and batch_size
X = tf.transpose(X, [1, 0, 2])
#Reshape to prepare input to hidden activation
X = tf.reshape(X, [-1, n_input]) #n_steps*batch_size, n_input
#Split data because rnn cell needs a list of inputs for the RNN inner loop
X = tf.split(0, n_steps, X) #n_steps*(batch_size, n_input)
init = tf.random_normal_initializer(stddev = 0.05)
lstm_cell = tf.nn.rnn_cell.LSTMCell(hidden, initializer = init, state_is_tuple = True)
output, _ = tf.nn.rnn(lstm_cell, X, dtype = tf.float32)
y = tf.convert_to_tensor(y)
return skflow.models.linear_regression(output[0], y)
錯誤報告
File "/home/lstm.py", line 182, in <module>
model.fit(X_train, y_train, monitors=[validation_monitor], steps=steps)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 1131, in fit
max_steps=max_steps)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 699, in _train_model
train_ops = self._get_train_ops(features, labels)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 1052, in _get_train_ops
return self._call_model_fn(features, labels, model_fn_lib.ModeKeys.TRAIN)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 1030, in _call_model_fn
raise ValueError('Unrecognized value returned by model_fn, '
ValueError: Unrecognized value returned by model_fn, please return ModelFnOps."
如果我修改模型行
model = skflow.SKCompat(skflow.Estimator(model_fn=lstm_model(X, y), model_dir=LOG_DIR))
它仍然報錯:
File "/home/lstm.py", line 175, in <module>
model = skflow.SKCompat(skflow.Estimator(model_fn=lstm_model(X, y), model_dir=LOG_DIR))
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 990, in __init__
if params is None and 'params' in model_fn_args:
TypeError: argument of type 'NoneType' is not iterable
我對tensorflow 0.12的contrib.learn.estimator()感到困惑。任何人都可以幫我糾正代碼並教給我估計嗎?不管怎樣,謝謝你。