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

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

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

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

機械学習

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

Python

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

Q&A

解決済

1回答

1035閲覧

特定のテキストを抽出したい

smart-material

総合スコア12

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

機械学習

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

Python

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

0グッド

0クリップ

投稿2021/10/22 06:29

編集2021/10/25 02:15

ヘディングのテキスト### 前提・実現したいこと

huggingfaceからDLしたText Classification on GLUEというものを、UNIXのローカルターミナルで実行し、結果として表示されるeval_lossだけを出力し、学習曲線を作成しようとしております。

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

該当のソースコード

Python

1import datasets 2import numpy as np 3import transformers 4GLUE_TASKS = ["cola", "mnli", "mnli-mm", "mrpc", "qnli", "qqp", "rte", "sst2", "stsb", "wnli"] 5task = "cola" 6model_checkpoint = "distilbert-base-uncased" 7#batch_size = 64 8batch_size = 4 9from datasets import load_dataset, load_metric 10actual_task = "mnli" if task == "mnli-mm" else task 11dataset = load_dataset("glue", actual_task) 12metric = load_metric('glue', actual_task) 13import datasets 14import random 15import pandas as pd 16from IPython.display import display, HTML 17def show_random_elements(dataset, num_examples=10): 18 assert num_examples <= len(dataset), "Can't pick more elements than there are in the dataset." 19 picks = [] 20 for _ in range(num_examples): 21 pick = random.randint(0, len(dataset)-1) 22 while pick in picks: 23 pick = random.randint(0, len(dataset)-1) 24 picks.append(pick) 25 26 df = pd.DataFrame(dataset[picks]) 27 for column, typ in dataset.features.items(): 28 if isinstance(typ, datasets.ClassLabel): 29 df[column] = df[column].transform(lambda i: typ.names[i]) 30 display(HTML(df.to_html())) 31from transformers import AutoTokenizer 32tokenizer = AutoTokenizer.from_pretrained(model_checkpoint, use_fast=True) 33task_to_keys = { 34 "cola": ("sentence", None), 35 "mnli": ("premise", "hypothesis"), 36 "mnli-mm": ("premise", "hypothesis"), 37 "mrpc": ("sentence1", "sentence2"), 38 "qnli": ("question", "sentence"), 39 "qqp": ("question1", "question2"), 40 "rte": ("sentence1", "sentence2"), 41 "sst2": ("sentence", None), 42 "stsb": ("sentence1", "sentence2"), 43 "wnli": ("sentence1", "sentence2"), 44} 45sentence1_key, sentence2_key = task_to_keys[task] 46 47def preprocess_function(examples): 48 if sentence2_key is None: 49 return tokenizer(examples[sentence1_key], truncation=True) 50 return tokenizer(examples[sentence1_key], examples[sentence2_key], truncation=True) 51 52encoded_dataset = dataset.map(preprocess_function, batched=True) 53 54from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer 55 56num_labels = 3 if task.startswith("mnli") else 1 if task=="stsb" else 2 57model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint, num_labels=num_labels) 58 59metric_name = "pearson" if task == "stsb" else "matthews_correlation" if task == "cola" else "accuracy" 60model_name = model_checkpoint.split("/")[-1] 61 62args = TrainingArguments( 63 f"{model_name}-finetuned-{task}", 64 evaluation_strategy = "epoch", 65 save_strategy = "epoch", 66 learning_rate=2e-5, 67 per_device_train_batch_size=batch_size, 68 per_device_eval_batch_size=batch_size, 69 num_train_epochs=2, 70 weight_decay=0.01, 71 load_best_model_at_end=True, 72 metric_for_best_model=metric_name, 73# push_to_hub=True, 74) 75 76def compute_metrics(eval_pred): 77 predictions, labels = eval_pred 78 if task != "stsb": 79 predictions = np.argmax(predictions, axis=1) 80 else: 81 predictions = predictions[:, 0] 82# print('=======================>',eval_pred) 83# print('=======================>') 84 return metric.compute(predictions=predictions, references=labels) 85 86validation_key = "validation_mismatched" if task == "mnli-mm" else "validation_matched" if task == "mnli" else "validation" 87trainer = Trainer( 88 model, 89 args, 90 train_dataset=encoded_dataset["train"].select(range(8)), 91 eval_dataset=encoded_dataset[validation_key].select(range(8)), 92 tokenizer=tokenizer, 93 compute_metrics=compute_metrics 94) 95 96trainer.train() 97 98 99 100import ast 101with open ('d2.txt')as f: 102 for line in f: 103 di = ast.literal-eval(line) 104 print(di['eval_loss']) 105

試したこと

初歩的なことかと思われますが、何卒よろしくお願いいたします。

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

イメージ説明
プログラムを実行すると、上記のように表示されます。

また、sed -e '$d' d.txt > d2.txt、最後の1行を削除するプログラムを実行すると下記のようにevalが頭につくものがd2.txtにすべて抽出されます。
イメージ説明

最後に、
import ast
with open ('d2.txt')as f:
for line in f:
di = ast.literal-eval(line)
print(di['eval_loss'])

をa.pyとし、実行すると2つあるeval_lossのうちの1つしか表示されず、またd2.txtにこの結果が反映されません。
イメージ説明
私が望む条件といたしましては、実行されたすべてのeval_lossを.txt化したく思います。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/10/24 00:33

どう困っているのか明記できますか?
smart-material

2021/10/24 01:21

コメントありがとうございます。 大変失礼致しました。 私がtrainを実行するとeval_lossが3つ表示されていたのですが、d2テキストに出力するプログラムを動かしたところ、そのうちの1つしか出力されなかったため、3つ全てをtxt化したいと思い質問させて頂きました。
退会済みユーザー

退会済みユーザー

2021/10/24 04:42

> eval_lossが3つ lossとaccuracyと何か、ではなくeval lossが3つですか? もし違うのであればこれらをなるべく正確に教えてください。
smart-material

2021/10/25 01:58

補足情報を追加いたしました。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2021/10/25 12:50

プログラムではちゃんとプロンプトに表示されて、 sed(略)でもちゃんとテキストに保存できるのに、 import ast(略)だとちゃんと表示されない、 ということでしょうか? もしこれで合っていたら、念のため手元のPCで確認したいので、sed(略)の結果のテキストを文字列形式で掲載できますか?
guest

回答1

0

自己解決

自己解決いたしました。ありがとうございました。

投稿2021/10/26 09:15

smart-material

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問