Open wujixian opened 5 years ago
遍历的是 word2id 中的 key 值,也就是 word,感觉没有错呢?
遍历的是 word2id 中的 key 值,也就是 word,感觉没有错呢?
for word in word2id: if word2vec.has_key(word): embedding_pre.append(word2vec[word]) else: embedding_pre.append(unknow_pre) 你这边的code for word in word2id:不是取得是value吗?value是id,id是数字啊 而 word2vec.has_key(word):取得是key key 是word value是vector。所以 一个是数字 一个是字, 两个永远不会相等的呀,一直执行的是else,而unknow_pre是填充的1111111, 最总就导致embedding_pre全是1111
遍历的是 word2id 中的 key 值,也就是 word,感觉没有错呢?
for word in word2id: if word2vec.has_key(word): embedding_pre.append(word2vec[word]) else: embedding_pre.append(unknow_pre) 你这边的code for word in word2id:不是取得是value吗?value是id,id是数字啊 而 word2vec.has_key(word):取得是key key 是word value是vector。所以 一个是数字 一个是字, 两个永远不会相等的呀,一直执行的是else,而unknow_pre是填充的1111111, 最总就导致embedding_pre全是1111
py2 for in 遍历的是 key 啊,难道 py3 不是?
遍历的是 word2id 中的 key 值,也就是 word,感觉没有错呢?
for word in word2id: if word2vec.has_key(word): embedding_pre.append(word2vec[word]) else: embedding_pre.append(unknow_pre) 你这边的code for word in word2id:不是取得是value吗?value是id,id是数字啊 而 word2vec.has_key(word):取得是key key 是word value是vector。所以 一个是数字 一个是字, 两个永远不会相等的呀,一直执行的是else,而unknow_pre是填充的1111111, 最总就导致embedding_pre全是1111
py2 for in 遍历的是 key 啊,难道 py3 不是?
遍历的是 word2id 中的 key 值,也就是 word,感觉没有错呢?
for word in word2id: if word2vec.has_key(word): embedding_pre.append(word2vec[word]) else: embedding_pre.append(unknow_pre) 你这边的code for word in word2id:不是取得是value吗?value是id,id是数字啊 而 word2vec.has_key(word):取得是key key 是word value是vector。所以 一个是数字 一个是字, 两个永远不会相等的呀,一直执行的是else,而unknow_pre是填充的1111111, 最总就导致embedding_pre全是1111
py2 for in 遍历的是 key 啊,难道 py3 不是?
额,py3 是value。不是key,好吧,怪不得那 ,我确实改成py3了。
has.key()这个函数不存在了吧,后来怎么改的,我也遇见了embedding_pre全是1111
has.key()这个函数不存在了吧,后来怎么改的,我也遇见了embedding_pre全是1111
for word in id2word:
# if word2vec.has_key(word):
if word in bert_vector:
embedding_pre.append(bert_vector[word])
else:
embedding_pre.append(unknow_pre)
改成这样就好了
has.key()这个函数不存在了吧,后来怎么改的,我也遇见了embedding_pre全是1111
for word in id2word: # if word2vec.has_key(word): if word in bert_vector: embedding_pre.append(bert_vector[word]) else: embedding_pre.append(unknow_pre)
改成这样就好了
记得把bert_vector替换成word2vec。我后来用了bert的词向量,改了code 忘记改回来了!你改一下把
运行python train.py,报错:No such file or directory: '../data/renmindata.pkl',创建renmindata.pkl再运行python train.py,报错: File "train.py", line 18, in
运行python train.py,报错:No such file or directory: '../data/renmindata.pkl',创建renmindata.pkl再运行python train.py,报错: File "train.py", line 18, in word2id = pickle.load(inp) EOFError: Ran out of input 菜鸟一个,请教
renmindata.pkl是要用数据创建的,不是你创建的名字相同的就完事了 ,renmindata.pkl这个文件存放的是所有你的数据。你得先生成renmindata.pkl文件 ,才能进行训练。
运行python train.py,报错:No such file or directory: '../data/renmindata.pkl',创建renmindata.pkl再运行python train.py,报错: File "train.py", line 18, in word2id = pickle.load(inp) EOFError: Ran out of input 菜鸟一个,请教
renmindata.pkl是要用数据创建的,不是你创建的名字相同的就完事了 ,renmindata.pkl这个文件存放的是所有你的数据。你得先生成renmindata.pkl文件 ,才能进行训练。
咋生成啊0.0
运行python train.py,报错:No such file or directory: '../data/renmindata.pkl',创建renmindata.pkl再运行python train.py,报错: File "train.py", line 18, in word2id = pickle.load(inp) EOFError: Ran out of input 菜鸟一个,请教
renmindata.pkl是要用数据创建的,不是你创建的名字相同的就完事了 ,renmindata.pkl这个文件存放的是所有你的数据。你得先生成renmindata.pkl文件 ,才能进行训练。
咋生成啊0.0
运行ChineseNER-master\data\renMinRiBao\data_renmin_word.py文件 就能生成renmindata.pkl
运行python train.py,报错:No such file or directory: '../data/renmindata.pkl',创建renmindata.pkl再运行python train.py,报错: File "train.py", line 18, in word2id = pickle.load(inp) EOFError: Ran out of input 菜鸟一个,请教
renmindata.pkl是要用数据创建的,不是你创建的名字相同的就完事了 ,renmindata.pkl这个文件存放的是所有你的数据。你得先生成renmindata.pkl文件 ,才能进行训练。
咋生成啊0.0
运行python train.py,报错:No such file or directory: '../data/renmindata.pkl',创建renmindata.pkl再运行python train.py,报错: File "train.py", line 18, in word2id = pickle.load(inp) EOFError: Ran out of input 菜鸟一个,请教
renmindata.pkl是要用数据创建的,不是你创建的名字相同的就完事了 ,renmindata.pkl这个文件存放的是所有你的数据。你得先生成renmindata.pkl文件 ,才能进行训练。
咋生成啊0.0
运行ChineseNER-master\data\renMinRiBao\data_renmin_word.py文件 就能生成renmindata.pkl
啊哦,知道了0.0,蟹蟹~
还有个问题,就是tenserflow2.0里面没有contrib了要怎么办啊,运行train.py pretrained的时候一直报错:AttributeERROR:'module' object has no attribute 'contrib'。
还有个问题,就是tenserflow2.0里面没有contrib了要怎么办啊,运行train.py pretrained的时候一直报错:AttributeERROR:'module' object has no attribute 'contrib'。
1.0 和2.0是不兼容的,他这个是1.0的版本 ,你要么换成1.0的 要么把代码改动一下适应2.0
还有个问题,就是tenserflow2.0里面没有contrib了要怎么办啊,运行train.py pretrained的时候一直报错:AttributeERROR:'module' object has no attribute 'contrib'。
1.0 和2.0是不兼容的,他这个是1.0的版本 ,你要么换成1.0的 要么把代码改动一下适应2.0
好的吧,我改成1.7.0的了,谢谢你~
tensorflow版本的tran.py文件在加载预训练向量的时候,原始的是word2id找到的是id,而不是字,word2vec里的词向量都是以字为主的,所以word2id应该改成id2word. 如果不改的话 也是能用的,不过embedding_pre全部是111111111,而不是vec.txt里的字向量。建议楼主改下这个坑,很难发现的。
您好,发现在bilstm-crf模型中,词向量是随机生成的,没有用的训练好的词向量(vec.txt)
tensorflow版本的tran.py文件在加载预训练向量的时候,原始的是word2id找到的是id,而不是字,word2vec里的词向量都是以字为主的,所以word2id应该改成id2word. 如果不改的话 也是能用的,不过embedding_pre全部是111111111,而不是vec.txt里的字向量。建议楼主改下这个坑,很难发现的。
您好,发现在bilstm-crf模型中,词向量是随机生成的,没有用的训练好的词向量(vec.txt)
你把上次训练的模型restore一下不就成了,向量就变成不是随机的了
tensorflow版本的tran.py文件在加载预训练向量的时候,原始的是word2id找到的是id,而不是字,word2vec里的词向量都是以字为主的,所以word2id应该改成id2word. 如果不改的话 也是能用的,不过embedding_pre全部是111111111,而不是vec.txt里的字向量。建议楼主改下这个坑,很难发现的。
您好,发现在bilstm-crf模型中,词向量是随机生成的,没有用的训练好的词向量(vec.txt)
你把上次训练的模型restore一下不就成了,向量就变成不是随机的了
在训练的时候,虽然把embedding_pretrained传到了bilstm-crf中, if self.pretrained: embeddings_init = word_embeddings.assign(self.embedding_pretrained) 但是得到的embeddings_init 在训练中并没有用到。 如果把embeddings_init 换成word_embeddings,可以训练模型,但是在测试的时候会报错
tensorflow版本的tran.py文件在加载预训练向量的时候,原始的是word2id找到的是id,而不是字,word2vec里的词向量都是以字为主的,所以word2id应该改成id2word. 如果不改的话 也是能用的,不过embedding_pre全部是111111111,而不是vec.txt里的字向量。建议楼主改下这个坑,很难发现的。