TypeError:DataType float32 for attr'Tindices'不在允许值列表中:int32,int64 [英] TypeError:DataType float32 for attr 'Tindices' not in list of allowed values: int32, int64

查看:529
本文介绍了TypeError:DataType float32 for attr'Tindices'不在允许值列表中:int32,int64的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习斯坦福大学的CS224n课程.我在依存解析器中的Assignment2 q2_parser_model.py中遇到错误

I am doing Stanford's CS224n course. I get an error in assignment2 q2_parser_model.py in my dependency parser

== 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

以下是我遇到错误的代码段和行

Following is the code snippet and line where I am getting error

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

推荐答案

您的self.input_placeholder必须作为int32int64的数组传递给tf.nn.embedding_lookup,所以您可以:

Your self.input_placeholder must be passed to tf.nn.embedding_lookup as an array of int32 or int64 , so you could just:

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

这篇关于TypeError:DataType float32 for attr'Tindices'不在允许值列表中:int32,int64的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆