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

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

ただいまの
回答率

88.77%

機械学習の結果を保存したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 527

firstbn

score 11

googlecolaboratryでpytorchのバージョン1.3.1を使って機械学習をしています。

わからないこと

①trainloss,validloss,acc,bestepoch,bestaccなどの値を1エポックごとに記録して別なファイルに保存したい。
②保存したファイルから値を読み込んでグラフとして出力したい。

 

現在は訓練のループ中にリスト(x)にそれぞれ追加していって、別なセルで取り出す→グラフにするという方法をしていますが、値をファイルに保存しておいて読み込み→グラフ作成にしたいと思っています。
訓練時のプログラムは以下になります。よろしくお願いいたします。

bestepoch = -1
bestacc = 0
x = []
for epoch in 80:
        model.train()
        trainloss = 0.

        for x_batch, y_batch in progress_bar(train_loader, parent=mb):
            preds = model(x_batch.cuda())
            loss = criterion(preds, y_batch.cuda())

            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

            avg_loss += loss.item() / len(train_loader)

        model.eval()
        valid_preds = np.zeros((len(x_val), num_classes))
        validloss = 0.

        for i, (x_batch, y_batch) in enumerate(valid_loader):
            preds = model(x_batch.cuda()).detach()
            loss = criterion(preds, y_batch.cuda())
            preds = torch.sigmoid(preds)
            valid_preds[i * test_batch_size: (i+1) * test_batch_size] = preds.cpu().numpy()

            validloss += loss.item() / len(valid_loader)

        score, weight = acc(y_val, valid_preds)
        acc = (score * weight).sum()

        if acc > bestacc:
            bestepoch = epoch + 1
            bestacc = acc
        x.append({
            'trainloss': trainloss, 'validloss': validloss, 'acc': acc, 'bestacc': bestacc, 'bestepoch':bestepoch})
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

-1

こういうことではなく?

書き込み

import pickle
pickle.dump(model, open("任意の名前.pickle.dat", "wb"))


読み込み

import pickle
pickle.load(open("任意の名前.pickle.dat", "rb"))

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/13 12:14 編集

    pickle.dump(model, open("任意の名前.pickle.dat", "wb"))
    ここのmodelとは何でしょうか?
    また、複数の値があるのですが書き込んでめちゃくちゃになったりしないんでしょうか。ファイル操作初心者ですみません…

    キャンセル

  • 2019/11/13 14:48 編集

    modelのところをlistの名前にして保存でできました!読み込みもばっちりです。ありがとうございます!

    キャンセル

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

  • ただいまの回答率 88.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る