teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

tweqk

2020/12/29 03:00

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- [Python & BERT]'str' object has no attribute 'cpu'エラー
1
+ [Python]'str' object has no attribute 'cpu'エラー
body CHANGED
@@ -1,45 +1,3 @@
1
- BERTを用いてシステムを作っているのですが、以下のコードの最終行で`str' object has no attribute 'cpu'`というエラーが出てしまいます(一部省略しています)
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

2020/12/29 03:00

投稿

退会済みユーザー
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

2020/12/28 07:36

投稿

退会済みユーザー
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