質問編集履歴

3

tweqk

2020/12/29 03:00

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- [Python & BERT]'str' object has no attribute 'cpu'エラー
1
+ [Python]'str' object has no attribute 'cpu'エラー
test CHANGED
@@ -1,89 +1,5 @@
1
- BERTを用いてシステムを作っているのですが、以下のコードの最終行で`str' object has no attribute 'cpu'`というエラーが出てしまいます(一部省略しています)
1
+ システムを作っているのですが、`str' object has no attribute 'cpu'`というエラーが出てしまいます
2
2
 
3
3
 
4
4
 
5
5
  こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです????‍♀️
6
-
7
-
8
-
9
- ```py
10
-
11
- from pathlib import Path
12
-
13
- import numpy as np
14
-
15
- import torch
16
-
17
- from transformers import BertTokenizer, BertModel, BertConfig, MecabTokenizer
18
-
19
- import MeCab
20
-
21
- import gzip
22
-
23
- import json
24
-
25
- import os
26
-
27
- import subprocess
28
-
29
- import unicodedata
30
-
31
-
32
-
33
- class Hoge:
34
-
35
- def __init__(self, bert_path, vocab_file_name="vocab.txt", use_cuda=False):
36
-
37
- config = BertConfig.from_json_file(bert_path + "/config.json")
38
-
39
- self.mecab_tokenizer = MecabTokenizer()
40
-
41
- self.model = BertModel.from_pretrained(bert_path, config=config)
42
-
43
- self.bert_tokenizer = BertTokenizer(
44
-
45
- Path(bert_path) / vocab_file_name,
46
-
47
- do_lower_case=False,
48
-
49
- do_basic_tokenize=False,
50
-
51
- )
52
-
53
- self.use_cuda = use_cuda
54
-
55
-
56
-
57
- def get_sentence_embedding(
58
-
59
- self, text, pooling_layer=-1, pooling_strategy="REDUCE_MEAN"
60
-
61
- ):
62
-
63
- tokens = self.mecab_tokenizer.tokenize(text)
64
-
65
- bert_tokens = self.bert_tokenizer.tokenize(" ".join(tokens))
66
-
67
- ids = self.bert_tokenizer.convert_tokens_to_ids(["[CLS]"] + bert_tokens[:510] + ["[SEP]"]) # max_seq_len-2
68
-
69
- tokens_tensor = torch.tensor(ids).reshape(1, -1)
70
-
71
-
72
-
73
- if self.use_cuda:
74
-
75
- tokens_tensor = tokens_tensor.to("cuda")
76
-
77
- self.model.to("cuda")
78
-
79
-
80
-
81
- self.model.eval()
82
-
83
- with torch.no_grad():
84
-
85
- all_encoder_layers, _ = self.model(tokens_tensor)
86
-
87
- embedding = all_encoder_layers[pooling_layer].cpu().numpy()
88
-
89
- ```

2

tweak

2020/12/29 03:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,25 @@
8
8
 
9
9
  ```py
10
10
 
11
+ from pathlib import Path
12
+
13
+ import numpy as np
14
+
15
+ import torch
16
+
11
17
  from transformers import BertTokenizer, BertModel, BertConfig, MecabTokenizer
18
+
19
+ import MeCab
20
+
21
+ import gzip
22
+
23
+ import json
24
+
25
+ import os
26
+
27
+ import subprocess
28
+
29
+ import unicodedata
12
30
 
13
31
 
14
32
 

1

tweak

2020/12/28 07:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです
5
+ こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです????‍♀️
6
6
 
7
7
 
8
8