2017-11-15 16 views
0

DynamicRnnEstimatorを使用しようとしていますが、「リスト」オブジェクトに「キー」という属性がありません。Tensorflow DynamicRnnEstimator AttributeError: 'list'オブジェクトに 'key'属性がありません

コード:ここで

feature_names = [ 
    'FeatureA', 
    'FeatureB', 
    'FeatureC', 
    'FeatureD', 
    'FeatureE', 
    'FeatureF'] 
    ... 
    feature_columns = [tf.feature_column.numeric_column(k) for k in feature_names] 
    print (feature_columns) 

    estimator = tf.contrib.learn.DynamicRnnEstimator(problem_type = constants.ProblemType.CLASSIFICATION, 
                prediction_type = rnn_common.PredictionType.SINGLE_VALUE, 
                sequence_feature_columns = [feature_columns], 
                context_feature_columns = None, 
                num_units = 5, 
                num_classes = 11, 
                cell_type = 'lstm', 
                optimizer = 'SGD', 
                model_dir = "model", 
                learning_rate = 0.1) 
    estimator.fit(input_fn=lambda: input_fn("train.csv"), steps=STEPS) 

は出力です:

[_NumericColumn(key='FeatureA', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='FeatureB', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='FeatureC', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='FeatureD', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='FeatureE', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='FeatureF', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None)] 

... 

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-83-bea117372333> in <module>() 
    26             learning_rate = 0.1) 
    27 
---> 28 estimator.fit(input_fn=lambda: input_fn("train.csv"), steps=STEPS) 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/python/util/deprecation.pyc in new_func(*args, **kwargs) 
    314     'in a future version' if date is None else ('after %s' % date), 
    315     instructions) 
--> 316  return func(*args, **kwargs) 
    317  return tf_decorator.make_decorator(func, new_func, 'deprecated', 
    318          _add_deprecated_arg_notice_to_docstring(

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in fit(self, x, y, input_fn, steps, batch_size, monitors, max_steps) 
    478  hooks.append(basic_session_run_hooks.StopAtStepHook(steps, max_steps)) 
    479 
--> 480  loss = self._train_model(input_fn=input_fn, hooks=hooks) 
    481  logging.info('Loss for final step: %s.', loss) 
    482  return self 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in _train_model(self, input_fn, hooks) 
    984  global_step_read_tensor = training_util._get_or_create_global_step_read() # pylint: disable=protected-access 
    985  with ops.control_dependencies([global_step_read_tensor]): 
--> 986   model_fn_ops = self._get_train_ops(features, labels) 
    987  ops.add_to_collection(ops.GraphKeys.LOSSES, model_fn_ops.loss) 
    988  all_hooks.extend(hooks) 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in _get_train_ops(self, features, labels) 
    1200  `ModelFnOps` object. 
    1201  """ 
-> 1202  return self._call_model_fn(features, labels, model_fn_lib.ModeKeys.TRAIN) 
    1203 
    1204 def _get_eval_ops(self, features, labels, metrics): 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in _call_model_fn(self, features, labels, mode, metrics) 
    1164  if 'model_dir' in model_fn_args: 
    1165  kwargs['model_dir'] = self.model_dir 
-> 1166  model_fn_results = self._model_fn(features, labels, **kwargs) 
    1167 
    1168  if isinstance(model_fn_results, model_fn_lib.ModelFnOps): 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/dynamic_rnn_estimator.pyc in _dynamic_rnn_model_fn(features, labels, mode) 
    478  sequence_input = build_sequence_input(features, 
    479            sequence_feature_columns, 
--> 480            context_feature_columns) 
    481  dropout = (dropout_keep_probabilities 
    482     if mode == model_fn.ModeKeys.TRAIN 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/dynamic_rnn_estimator.pyc in build_sequence_input(features, sequence_feature_columns, context_feature_columns, weight_collections, scope) 
    190 features.update(layers.transform_features(
    191  features, 
--> 192  list(sequence_feature_columns) + list(context_feature_columns or []))) 
    193 sequence_input = layers.sequence_input_from_feature_columns(
    194  columns_to_tensors=features, 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/feature_column_ops.pyc in transform_features(features, feature_columns) 
    642 """ 
    643 columns_to_tensor = features.copy() 
--> 644 check_feature_columns(feature_columns) 
    645 transformer = _Transformer(columns_to_tensor) 
    646 for column in sorted(set(feature_columns), key=lambda x: x.key): 

/home/judge/anaconda3/envs/ipykernel_py2/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/feature_column_ops.pyc in check_feature_columns(feature_columns) 
    765 seen_keys = set() 
    766 for f in feature_columns: 
--> 767  key = f.key 
    768  if key in seen_keys: 
    769  raise ValueError('Duplicate feature column key found for column: {}. ' 

AttributeError: 'list' object has no attribute 'key' 

は、トレースを見ると、それはsequence_feature_columnsとcontext_feature_columnsを連結します。結果を見始めるが、キーは見つからない。私はfeature_namesを印刷して、キーを持っています。

答えて

1

あなたはリストの2番目の時間([[...]]ではなく[...]を与える)feature_columnsを巻いているように見えます:助けを

sequence_feature_columns = [feature_columns],

+0

感謝を。私は今まで、コール引数を変更した: sequence_feature_columns = feature_columns が、取得 はAttributeError:「_NumericColumn」オブジェクトには属性「insert_transformed_feature」私はそれをお勧めするために嫌いな限り –

+0

は、それがDynamicRnnEstimator'が更新されていない 'のような音を持っていませんコア 'tf.feature_columns'をまだ使用していません。 'tf.contrib.layers.real_valued_column'を使うとこの問題を回避できます。これで問題が解決した場合は、バグや機能のリクエストを自由に記入してください。 –

関連する問題