2017-06-11 5 views
0

私はスタンフォードのCS224nコースをやっています。私は以下の私の依存関係パーサTypeError:attrのデータ型float32 'Tindices'が許容値のリストにありません:int32、int64

== Initializing== 

    Loading data... took 2.17 seconds 
    Building parser... took 0.04 seconds 
    Loading pretrained embeddings... took 2.16 seconds 
    Vectorizing data... took 0.06 seconds 
    Preprocessing training data... 
    1000/1000 [==============================] - 1s  
    Building model... 
    Traceback (most recent call last): 
     File "q2_parser_model.py", line 286, in <module> 
     main() 
     File "q2_parser_model.py", line 252, in main 
     model = ParserModel(config, embeddings) 
     File "q2_parser_model.py", line 237, in __init__ 
     self.build() 
     File "/home/jarvis/My projects/Machine Learning/CS224n/My assignments/assignment2/model.py", line 109, in build 
     self.pred = self.add_prediction_op() 
     File "q2_parser_model.py", line 149, in add_prediction_op 
     x = self.add_embedding() 
     File "q2_parser_model.py", line 119, in add_embedding 
     features = tf.nn.embedding_lookup(embedding, self.input_placeholder) 
     File "/home/jarvis/anaconda3/envs/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/embedding_ops.py", line 110, in embedding_lookup 
     validate_indices=validate_indices) 
     File "/home/jarvis/anaconda3/envs/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 1293, in gather 
     validate_indices=validate_indices, name=name) 
     File "/home/jarvis/anaconda3/envs/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 582, in apply_op 
     _Attr(op_def, input_arg.type_attr)) 
     File "/home/jarvis/anaconda3/envs/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 60, in _SatisfiesTypeConstraint 
     ", ".join(dtypes.as_dtype(x).name for x in allowed_list))) 
    TypeError: DataType float32 for attr 'Tindices' not in list of allowed values: int32, int64 

にassignment2 q2_parser_model.pyのエラーを取得することは、私はエラー

self.input_placeholderがの配列として tf.nn.embedding_lookupに渡す必要がありますあなたの
def add_embedding(self): 
     embedding = tf.Variable(self.pretrained_embeddings, name = "embedding") 
    --> features = tf.nn.embedding_lookup(embedding, self.input_placeholder) 
     embeddings = tf.reshape(features, [-1, self.config.n_features * 
     self.config.embedding_size]) 
     ### END YOUR CODE 
     return embeddings 

答えて

1

を取得していますコードスニペットとラインでありますint32またはint64、あなたは可能性だけのよう:

features = tf.nn.embedding_lookup(embedding, 
          np.asarray(self.input_placeholder, dtype=np.int32)) 
0

私は私のミスを持って、それが不適切なダによるものでしたタイプ定義。私は、int32の代わりにfloat32としてプレースホルダを定義しました

self.labels_placeholder = tf.placeholder(tf.int32, shape=(self.config.batch_size, self.config.n_classes)) 
関連する問題