Kaggleコンペの参加チュートリアル(3.推論ファイル投稿編)
11204 ワード
はじめに
- 育休中のエンジニアの私が、自宅でのウォームアップと勉強を兼ねてKaggleコンペに参加してみることにしたので、その記録を残したいと思う。
- 今回は、Kaggleの概略を知り、Begginer向けコンペへ参加することで、基本的な参加方法や使い方を理解することを目指す。
- Kaggleの概要~参加登録までの流れは、前々回の「Kaggleコンペの参加チュートリアル(1.参加編)」参照。
- その後の前処理~モデル開発は、前回の「Kaggleコンペの参加チュートリアル(2.前処理~モデル開発編)」参照。
「タイタニックの生存予測」コンペに投稿
- 前回、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
コンペへの投稿
投稿結果の確認
コードをGithubリポジトリに保存
- 作成したコード一式を、Githubのプライベートリポジトリに保存しておく。
- まず、Githubにログインしてリポジトリを作成。
- Amazon Sagemakerにログインし、ノートブック→Gitリポジトリから「リポジトリの追加」を選択し、設定画面へ。
- リポジトリの設定を以下の例のように入力して、「リポジトリの追加」を選択。
- ノートブックインスタンスを一旦「停止」して、「編集」からGitリポジトリを追加。
- ノートブックインスタンスを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したいと思います。
- 前回、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
コンペへの投稿
投稿結果の確認
コードをGithubリポジトリに保存
- 作成したコード一式を、Githubのプライベートリポジトリに保存しておく。
- まず、Githubにログインしてリポジトリを作成。
- Amazon Sagemakerにログインし、ノートブック→Gitリポジトリから「リポジトリの追加」を選択し、設定画面へ。
- リポジトリの設定を以下の例のように入力して、「リポジトリの追加」を選択。
- ノートブックインスタンスを一旦「停止」して、「編集」からGitリポジトリを追加。
- ノートブックインスタンスを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したいと思います。
Author And Source
この問題について(Kaggleコンペの参加チュートリアル(3.推論ファイル投稿編)), 我々は、より多くの情報をここで見つけました https://qiita.com/m_sugimura/items/0a35c6f47e08283af972著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .