LoginSignup
1
3

More than 1 year has passed since last update.

Kaggleコンペの参加チュートリアル(3.推論ファイル投稿編)

Posted at

はじめに

「タイタニックの生存予測」コンペに投稿

  • 前回、Beginner向けコンペである「タイタニックの生存予測」のデータを使って、モデルの学習を行った。
  • 今回は、学習済モデルを使って投稿用の推論ファイルを作成し、実際にコンペに投稿する。

テストデータ推論

  • 学習済モデルを使って、テストデータを推論させる。
  • 推論コードは以下。
estimate.ipynb(推論コード)
#%load_ext autoreload
#%autoreload

import os
from datetime import datetime
import pandas as pd
import numpy as np
import torch
from torch.utils.data import DataLoader
from src.dataset.dataset import DatasetWithTag, DatasetNoTag
from src.network.simplefcn import SimpleFCN

# config
TRAIN_FILE = "./data/train_prepro.csv"
TEST_FILE = './data/test_prepro.csv'
MODEL = './model/20210618_063522/049_losstrain_0.3914_lossval_0.3814.pth'

BATCH_SIZE = 100
INPUT_N = 7
OUTPUT_N = 2
NODE_N = 64

if __name__ == '__main__':
    # dataloader
    dataset_t = DatasetWithTag(TRAIN_FILE)
    mean, std = dataset_t.get_mean_std()
    dataset = DatasetNoTag(TEST_FILE, mean, std)
    dataloader = torch.utils.data.DataLoader(dataset, batch_size=BATCH_SIZE, shuffle=False, num_workers=1)

    # Network
    net = SimpleFCN(INPUT_N, OUTPUT_N, NODE_N)
    model = torch.load(MODEL)
    net.load_state_dict(model, strict=True)
    #net.eval()

    # prepare output
    test_df = pd.read_csv('./data/test.csv')
    test_data = test_df.values
    passangerids = test_data[:, 0]
    result = np.zeros((passangerids.shape[0], 2))
    result[:, 0] = passangerids

    # estimate
    for i, (batch) in enumerate(dataloader):
        est = net(batch).data
        estmax = torch.max(est, 1)[1]
        result[i*BATCH_SIZE : (i+1)*BATCH_SIZE, 1] = estmax.T
        # result[i*BATCH_SIZE : (i+1)*BATCH_SIZE, 2:] = est

    # output result
    filename = './result/' + os.path.basename(MODEL) + '.csv'
    np.savetxt(filename, result, delimiter=',', fmt='%d')
    print('save file to {}'.format(filename))
  • 実行結果
save file to ./result/049_losstrain_0.3914_lossval_0.3814.pth.csv

コンペへの投稿

  • 「Submit Predictions」を選択。
    image.png
  • 推論結果のCSVファイルをアップロードし、コメントを書いて「Make Submission」。
    image.png
  • 投稿できました!
    image.png

投稿結果の確認

  • 早速LeaderBoardを確認。
  • スコアは0.76555、39216/49676位。 image.png

コードをGithubリポジトリに保存

  • 作成したコード一式を、Githubのプライベートリポジトリに保存しておく。
  • まず、Githubにログインしてリポジトリを作成。
    image.png
  • Amazon Sagemakerにログインし、ノートブック→Gitリポジトリから「リポジトリの追加」を選択し、設定画面へ。
  • リポジトリの設定を以下の例のように入力して、「リポジトリの追加」を選択。 image.png
  • ノートブックインスタンスを一旦「停止」して、「編集」からGitリポジトリを追加。
    image.png
  • ノートブックインスタンスをJupyter Labから起動し、TerminalからコマンドでGithubにPushする。
sh-4.2$ cd SageMaker/titanic
sh-4.2$ git init
sh-4.2$ git add *
sh-4.2$ git commit -m "1st submitted base model"
sh-4.2$ git push origin master

最後に

  • ひとまず、Kaggleコンペに参加してみることができました。
  • 次はもう少し実用的なコンペにTryしたいと思います。
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3