質問編集履歴
3
tweqk
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[Python
|
1
|
+
[Python]'str' object has no attribute 'cpu'エラー
|
test
CHANGED
@@ -1,89 +1,5 @@
|
|
1
|
-
|
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
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
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
|
|