Skip to content

Instantly share code, notes, and snippets.

@spider-man-tm
spider-man-tm / random_grid_shuffle.py
Created May 30, 2020 16:19
ある画像をいくつかのブロックに分割し、ランダムに並び替えたい時
import numpy as np
import matplotlib.pyplot as plt
import cv2
import random
img = cv2.imread('img.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
def concat_tile(im_list_2d):
@spider-man-tm
spider-man-tm / plot_save.py
Last active August 30, 2022 11:22
凡例を枠外に出したプロットを保存する時に見切れない様にする方法
# matplotlibで画像として保存する
# 凡例をいい具合に枠外に持ってきた上で
# saveした時に見切れない様に調整
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 4*math.pi, 100)
sin = np.sin(x)
cos = np.cos(x)
@spider-man-tm
spider-man-tm / plot_confusion_matrix.py
Last active July 8, 2022 07:28
Confusion Matrix を美しくプロットする関数
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
from sklearn.metrics import confusion_matrix
from sklearn.utils.multiclass import unique_labels
def plot_confusion_matrix(y_true, y_pred,
save_path,
normalize=True,
@spider-man-tm
spider-man-tm / qwa_optimization.py
Created June 2, 2020 16:01
QWK(Quadratic Weighted Kappa)の最適化計算を行うクラス
import numpy as np
import scipy as sp
from functools import partial
from sklearn.metrics import cohen_kappa_score
def quadratic_weighted_kappa(y_hat, y):
return cohen_kappa_score(y_hat, y, weights='quadratic')
@spider-man-tm
spider-man-tm / pytorch_loss_classifier.py
Last active July 31, 2020 06:57
PyTorch Loss Function 順次更新
import torch
import torch.nn as nn
from torch.nn import functional as F
class FocalLoss(nn.Module):
def __init__(self, alpha=1, gamma=2, logits=True, reduce=True):
super(FocalLoss, self).__init__()
self.alpha = alpha
self.gamma = gamma
@spider-man-tm
spider-man-tm / random_shadow.py
Last active September 3, 2020 11:47
ImageOnlyTransformを継承したRandomShadowの実装
import math
import random
from albumentations.core.transforms_interface import ImageOnlyTransform
class RandomShadow(ImageOnlyTransform):
def __init__(self, always_apply=False, p=0.5, sl=0.02, sh=0.4, r1=0.3, brightness=0.75):
super(RandomShadow, self).__init__(always_apply=always_apply, p=p)
self.brightness = brightness
self.sl = sl
@spider-man-tm
spider-man-tm / keepClickingConnectButton.js
Last active January 17, 2021 05:00
Google Chrome で定期的にボタンクリックイベントを発生させる。
function KeepClickingConnectButton() {
console.log("40分ごとに再接続");
document.querySelector("#top-toolbar > colab-connect-button")
.shadowRoot.querySelector("#connect").click();
}
let id = setInterval(KeepClickingConnectButton, 2400*1000);
@spider-man-tm
spider-man-tm / sleep.ts
Created May 25, 2021 05:04
TypeScript(JavaScriptでも可)でsleep機能を実行できる関数
// Promise, async/awaitを使えば簡単にかける
/**
* msec: スリープさせる時間(秒)
* 戻り値はPromise
*/
const sleep = (msec) => new Promise(resolve => setTimeout(resolve, msec * 1000));
/**
* async/awaitでスリープ機能を実装
@spider-man-tm
spider-man-tm / mem.py
Created July 15, 2021 11:19
各変数のメモリ使用量を表示する
print("{}{: >25}{}{: >10}{}".format('|', 'Variable Name', '|', 'Memory', '|'))
print(" ------------------------------------ ")
for var_name in dir():
if not var_name.startswith("_") and sys.getsizeof(eval(var_name)) > 10000:
print("{}{: >25}{}{: >10}{}{: >5}{}".format(
'|', var_name, '|', sys.getsizeof(eval(var_name)), '|', sys.getrefcount(var_name), '|'))
@spider-man-tm
spider-man-tm / logger.py
Last active June 14, 2023 07:04
pythonの汎用的log関数
def make_logger(path: str) -> logging.Logger:
logger = logging.getLogger(__name__) # ロガーを取得
logger.setLevel(logging.DEBUG) # 出力レベルを設定
# 呼び出し元が異なる際に起こるloggerの重複を防ぐ
if not logger.hasHandlers():
fmt = logging.Formatter(
'[%(levelname)s] - %(asctime)s - %(message)s'
) # フォーマッターを設定
handler_s = logging.StreamHandler() # ストリームハンドラーを生成(標準出力)