質問編集履歴
3
tweqk
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
[Python
|
1
|
+
[Python]'str' object has no attribute 'cpu'エラー
|
body
CHANGED
@@ -1,45 +1,3 @@
|
|
1
|
-
|
1
|
+
システムを作っているのですが、`str' object has no attribute 'cpu'`というエラーが出てしまいます
|
2
2
|
|
3
|
-
こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです????♀️
|
3
|
+
こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです????♀️
|
4
|
-
|
5
|
-
```py
|
6
|
-
from pathlib import Path
|
7
|
-
import numpy as np
|
8
|
-
import torch
|
9
|
-
from transformers import BertTokenizer, BertModel, BertConfig, MecabTokenizer
|
10
|
-
import MeCab
|
11
|
-
import gzip
|
12
|
-
import json
|
13
|
-
import os
|
14
|
-
import subprocess
|
15
|
-
import unicodedata
|
16
|
-
|
17
|
-
class Hoge:
|
18
|
-
def __init__(self, bert_path, vocab_file_name="vocab.txt", use_cuda=False):
|
19
|
-
config = BertConfig.from_json_file(bert_path + "/config.json")
|
20
|
-
self.mecab_tokenizer = MecabTokenizer()
|
21
|
-
self.model = BertModel.from_pretrained(bert_path, config=config)
|
22
|
-
self.bert_tokenizer = BertTokenizer(
|
23
|
-
Path(bert_path) / vocab_file_name,
|
24
|
-
do_lower_case=False,
|
25
|
-
do_basic_tokenize=False,
|
26
|
-
)
|
27
|
-
self.use_cuda = use_cuda
|
28
|
-
|
29
|
-
def get_sentence_embedding(
|
30
|
-
self, text, pooling_layer=-1, pooling_strategy="REDUCE_MEAN"
|
31
|
-
):
|
32
|
-
tokens = self.mecab_tokenizer.tokenize(text)
|
33
|
-
bert_tokens = self.bert_tokenizer.tokenize(" ".join(tokens))
|
34
|
-
ids = self.bert_tokenizer.convert_tokens_to_ids(["[CLS]"] + bert_tokens[:510] + ["[SEP]"]) # max_seq_len-2
|
35
|
-
tokens_tensor = torch.tensor(ids).reshape(1, -1)
|
36
|
-
|
37
|
-
if self.use_cuda:
|
38
|
-
tokens_tensor = tokens_tensor.to("cuda")
|
39
|
-
self.model.to("cuda")
|
40
|
-
|
41
|
-
self.model.eval()
|
42
|
-
with torch.no_grad():
|
43
|
-
all_encoder_layers, _ = self.model(tokens_tensor)
|
44
|
-
embedding = all_encoder_layers[pooling_layer].cpu().numpy()
|
45
|
-
```
|
2
tweak
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,7 +3,16 @@
|
|
3
3
|
こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです????♀️
|
4
4
|
|
5
5
|
```py
|
6
|
+
from pathlib import Path
|
7
|
+
import numpy as np
|
8
|
+
import torch
|
6
9
|
from transformers import BertTokenizer, BertModel, BertConfig, MecabTokenizer
|
10
|
+
import MeCab
|
11
|
+
import gzip
|
12
|
+
import json
|
13
|
+
import os
|
14
|
+
import subprocess
|
15
|
+
import unicodedata
|
7
16
|
|
8
17
|
class Hoge:
|
9
18
|
def __init__(self, bert_path, vocab_file_name="vocab.txt", use_cuda=False):
|
1
tweak
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
BERTを用いてシステムを作っているのですが、以下のコードの最終行で`str' object has no attribute 'cpu'`というエラーが出てしまいます(一部省略しています)
|
2
2
|
|
3
|
-
こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです
|
3
|
+
こちらは(記憶が正しければ)以前は動いていたコードで、新しいPCに環境構築して再度動かしてみたら出てきたエラーなので何かのモジュールなりライブラリなどが足りないのかなと踏んでいるのですが、解決方法をご存知の方がいらっしゃいましたら教えていただきたいです????♀️
|
4
4
|
|
5
5
|
```py
|
6
6
|
from transformers import BertTokenizer, BertModel, BertConfig, MecabTokenizer
|