質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2366閲覧

AttributeError: 'str' object has no attribute 'backward'の解消方法について教えて下さい

shikinami

総合スコア0

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/20 00:33

前提・実現したいこと

https://qiita.com/takubb/items/fd972f0ac3dba909c293
をGoogleColabを利用して学習していましたが、順番に処理を実行したところエラーが発生して先に進めません。
どのように修正すれば良いか教えて下さい。

発生している問題・エラーメッセージ

AttributeError Traceback (most recent call last) <ipython-input-21-71601c2017dc> in <module>() 5 6 for epoch in range(max_epoch): ----> 7 train_ = train(model) 8 test_ = train(model) 9 train_loss_.append(train_) <ipython-input-20-c19e951568be> in train(model) 12 optimizer.zero_grad() 13 loss, logits = model(b_input_ids, token_type_ids=None, attention_mask=b_input_mask, labels=b_labels) ---> 14 loss.backward 15 torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0) 16 optimizer.step() AttributeError: 'str' object has no attribute 'backward'

該当のソースコード

python

1# 最適化手法の設定 2optimizer = AdamW(model.parameters(), lr=2e-5) 3 4# 訓練パートの定義 5def train(model): 6 model.train() # 訓練モードで実行 7 train_loss = 0 8 for batch in train_dataloader:# train_dataloaderはword_id, mask, labelを出力する点に注意 9 b_input_ids = batch[0].to(device) 10 b_input_mask = batch[1].to(device) 11 b_labels = batch[2].to(device) 12 optimizer.zero_grad() 13 loss, logits = model(b_input_ids, token_type_ids=None, attention_mask=b_input_mask, labels=b_labels) 14 loss.backward() 15 torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0) 16 optimizer.step() 17 train_loss += loss.item() 18 return train_loss 19 20# テストパートの定義 21def validation(model): 22 model.eval()# 訓練モードをオフ 23 val_loss = 0 24 with torch.no_grad(): # 勾配を計算しない 25 for batch in validation_dataloader: 26 b_input_ids = batch[0].to(device) 27 b_input_mask = batch[1].to(device) 28 b_labels = batch[2].to(device) 29 with torch.no_grad(): 30 (loss, logits) = model(b_input_ids, 31 token_type_ids=None, 32 attention_mask=b_input_mask, 33 labels=b_labels) 34 val_loss += loss.item() 35 return val_loss 36 37# 学習の実行 38max_epoch = 4 39train_loss_ = [] 40test_loss_ = [] 41 42for epoch in range(max_epoch): 43 train_ = train(model) 44 test_ = train(model) 45 train_loss_.append(train_) 46 test_loss_.append(test_)

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

AttributeError: 'str' object has no attribute 'backward'

'str'オブジェクトには'backward'というアトリビュートはありません。
とおっしゃってます

lossになにが入ってるのか、本来なにが入らなければならないのかをチェックしよう

投稿2021/07/20 00:37

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問