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

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

新規登録して質問してみよう
ただいま回答率
85.35%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python

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

Q&A

1回答

2845閲覧

Bert for regressionのエラー Can't pickle local object の解決方法、知見をください

Twinkle_Twinkle

総合スコア5

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python

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

0グッド

0クリップ

投稿2021/09/02 06:38

前提・実現したいこと(+試したこと)

https://www.kaggle.com/sumantindurkhya/bert-for-regression/
のコードを実際に動かしてみたいのですが、下記のエラー(Can't pickle local object)が出力されどうすればよいか分かりません。
上記問題の解決法についてご知見を頂きたいと考えております。

コピー元のTrain Function(In[18]の6行目~)
for i, (input_ids, attention_mask, target) in enumerate(iterable=train_loader):
の部分でエラーが出ているようです。

作業環境
windows10, Anacondaを用いております。

試したこと
Kaggleのリンク先のコードをコピペして1つのpyファイルにして実行。
Windows環境のため、そのまま実行するとBroken pipeのエラーが起きたため、回避のため、
if name == 'main':
main()
と書き、コードはmain()の中にコピー&ペーストしております。

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

Traceback (most recent call last): File "C:\Users\xxx\Desktop\bert_regression.py", line 285, in <module> main() File "C:\Users\xxx\Desktop\bert_regression.py", line 247, in main for i, (input_ids, attention_mask, target) in enumerate(iterable=train_loader): File "C:\Users\xxx\Anaconda3\envs\text\lib\site-packages\torch\utils\data\dataloader.py", line 355, in __iter__ return self._get_iterator() File "C:\Users\xxx\Anaconda3\envs\text\lib\site-packages\torch\utils\data\dataloader.py", line 301, in _get_iterator return _MultiProcessingDataLoaderIter(self) File "C:\Users\xxx\Anaconda3\envs\text\lib\site-packages\torch\utils\data\dataloader.py", line 914, in __init__ w.start() File "C:\Users\xxx\Anaconda3\envs\text\lib\multiprocessing\process.py", line 105, in start self._popen = self._Popen(self) File "C:\Users\xxx\Anaconda3\envs\text\lib\multiprocessing\context.py", line 223, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "C:\Users\xxx\Anaconda3\envs\text\lib\multiprocessing\context.py", line 322, in _Popen return Popen(process_obj) File "C:\Users\xxx\Anaconda3\envs\text\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__ reduction.dump(process_obj, to_child) File "C:\Users\xxx\Anaconda3\envs\text\lib\multiprocessing\reduction.py", line 60, in dump ForkingPickler(file, protocol).dump(obj) AttributeError: Can't pickle local object 'main.<locals>.Excerpt_Dataset'

該当のソースコード

python

1#文字数の関係で一部だけ抽出いたします。全文についてはhttps://www.kaggle.com/sumantindurkhya/bert-for-regression/をご参照頂けると幸いです。 2 3 #Train function 4 def train(model, criterion, optimizer, train_loader, val_loader, epochs, device): 5 best_acc = 0 6 for epoch in trange(epochs, desc="Epoch"): 7 model.train() 8 train_loss = 0 9 for i, (input_ids, attention_mask, target) in enumerate(iterable=train_loader): 10 optimizer.zero_grad() 11 12 input_ids, attention_mask, target = input_ids.to(device), attention_mask.to(device), target.to(device) 13 14 output = model(input_ids=input_ids, attention_mask=attention_mask) 15 16 loss = criterion(output, target.type_as(output)) 17 loss.backward() 18 optimizer.step() 19 20 train_loss += loss.item() 21 22 print(f"Training loss is {train_loss/len(train_loader)}") 23 24 val_loss = evaluate(model=model, criterion=criterion, dataloader=val_loader, device=device) 25 26 print("Epoch {} complete! Validation Loss : {}".format(epoch, val_loss)) 27 28 29#エラーとなるのは下記のtrain関数を実行した際にepoch=0が表示されて処理が中断されてしまいます。 30 train(model=model, 31 criterion=criterion, 32 optimizer=optimizer, 33 train_loader=train_loader, 34 val_loader=valid_loader, 35 epochs = 10, 36 device = device) 37

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

上記の通りです

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

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

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

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

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

guest

回答1

0

データが読めていないっぽいようですが、train_dataはデータが入っていますか?
もし入っていなければ、以下のパスにcsvが配置されていないと思われます。

python

1dftrain = pd.read_csv('../input/commonlitreadabilityprize/train.csv')

投稿2021/09/02 07:58

t_obara

総合スコア5488

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

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

Twinkle_Twinkle

2021/09/02 08:16

もちろんデータは読み込んでおります。print(dftrain)の出力結果は下記になります id url_legal ... target standard_error 0 c12129c31 NaN ... -0.340259 0.464009 1 85aa80a4c NaN ... -0.315372 0.480805 2 b69ac6792 NaN ... -0.580118 0.476676 3 dd1000b26 NaN ... -1.054013 0.450007 4 37c1b32fb NaN ... 0.247197 0.510845 ... ... ... ... ... 2829 25ca8f498 https://sites.ehe.osu.edu/beyondpenguins/files... ... 1.711390 0.646900 2830 2c26db523 https://en.wikibooks.org/wiki/Wikijunior:The_E... ... 0.189476 0.535648 2831 cd19e2350 https://en.wikibooks.org/wiki/Wikijunior:The_E... ... 0.255209 0.483866 2832 15e2e9e7a https://en.wikibooks.org/wiki/Geometry_for_Ele... ... -0.215279 0.514128 2833 5b990ba77 https://en.wikibooks.org/wiki/Wikijunior:Biolo... ... 0.300779 0.512379 [2834 rows x 6 columns]
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問