Python

softplus, softmax関数のオーバーフロー対策

xをtorch.tensor型として def softplus(x): return torch.max(torch.nn.functional.relu(x)) + torch.log(1 + torch.exp(- torch.abs(x))) def softmax(x): tmp = (x-torch.max(x)) return torch.exp(tmp) / torch.exp(tmp).sum()

シンプルな2次元ベクトルクラス

from math import hypot class Vector: def __init__(slef, x=0, y=0): self.x = x self.y = y def __repr__(self): return "Vector(%r, %r)"%(self.x, self.y) def __abs__(self): return hypot(slef.x, self.y) def __bool__(self): return (abs(self)) de…

【Python】train_data_splitについて

dataset = ["dog000.png", "dog001.png", ... , "dog999.png"] というデータセットのパスを格納しているリストがある場合でトレーニングデータとテストデータに分ける場合, 重複なくランダムに分けたいときのメモ import numpy as np train = np.random_choi…

【Python】PIL.Image.putpalette()について

semantic segmentationで独自データセットを用いたいとき, パレットにRGB値とクラスの対応の定義をする必要がありそうなので, パレットを定義する方法を考察. 1. まず, GIMPなどで, 画像をアノテーション. 2. 各クラスの色のRGB値をリストに入れる. [R0, G0,…

【PyTorch】DataLoaderで(images, labels)だけでなく(images, labels, paths)をロードできるようにする

まずglob.glob()を用いて, すべての画像データのパスを保持したリストを作る. def make_datapath_list(phase="train"): rootpath = "./data/" target_path = os.path.join(rootpath, phase, "**", "*.jpg") # 最初の**はクラスのディレクトリ path_list = []…

【python】 PythonでMeCabを使う

エラーが出てよくわからなかったけど, ここを参考にしたら上手くできた. own-search-and-study.xyz

物体認識をお手軽に試す

ImageNetにおける物体認識をしたいとする. 通常ならイチからモデルを組み, データを入手し, 学習させ……という作業が必要なわけだが, ディープラーニングのフレームワークKearsならこれが簡単にできる. さらに, VGGやResNet, Xception, MobileNetなど自宅の計…

【numpy】よく見るサイトメモ

sin波の生成 qiita.com乱数生成 qiita.com (b - a) * np.random.rand() + a

【numpy】 行列結合

a = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) b = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) c = np.vstack((a, b)) c = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [1, 2], [3, 4], [5, 6], [7, 8]])

最小二乗法をフルスクラッチで実装する

ココで言うフルスクラッチは行列演算以外である. 行列演算は本質ではないので, 行列演算ライブラリは使うことにする.前回の記事で線形モデルの最小二乗法について, パラメータの解が で得られることが分かった. これをPythonによって実装してみる. 今回は一…

【環境設定】opencvを入れる

後々のことも考えて, pyenvでanaconda3.x環境を作りcondaでインストールするのが無難そう. qiita.com

【urllib】プロキシ設定

proxyの使い方メモ keras.datasets.mnist.load_data()とかしたいときに, プロキシを通す方法 import urllib proxy_support = urllib.request.ProxyHandler({'https': 'http://proxy.hogehoge.ac.jp:80'}) opener = urllib.request.build_opener(proxy_suppor…

【Python】matplotlibで最低限のグラフをかけるようにする

TeXで表示させるため, グラフが必要な時期になってきた. Pythonで最低限のグラフを描画する方法をメモ. sigmoid関数のプロット import numpy as np import matplotlib.pyplot as plt # 関数定義 x = np.linspace(-8, 8, 100) y = 1/ (1+np.exp(-x)) # 垂直線…

【Python】 pythonからshellの実行

Pythonからshellコマンドを実行する際に以下のようなやり方がある. 今回は次のshellコマンドをpythonで実行するやり方を比較する. $sha256sum hoge.zip #返り値: xxxxxxxxxxx hoge.zip os.system()を使う方法 import os file_name = "hoge.zip" os.system('s…

【Python】 再帰的にファイルを取得する

import os def find_all_files(directory): for root, dirs, files in os.walk(directory): #yield root # ここをアンコメントするとディレクトリも得られる for file in files: yield os.path.join(root, file) if __name__ == "__main__": path_directory …

【Windows】Anaconda環境にOpenCVを入れる

https://anaconda.org/conda-forge/opencv これの通り

【Python】 辞書のkeyとvalueを反対にする

辞書のkeyとvalueを変えた辞書は先頭にinv_とつける慣習があるらしい. alphabet = {i:c for i,c in zip(range(4),["a","b","c","d"])} # {0: 'a', 1: 'b', 2: 'c', 3: 'd'} inv_dict = {v:k for k,v in alphabet.items()} # {'a': 0, 'b': 1, 'c': 2, 'd': 3}

【Python】 リストをシャッフルする

Pythonでリストの要素をシャッフルする import random print(type(a))# list random.shuffle(a)

【Python】 confusion_matrtixの作り方

seabornのheatmapによって表現できる. import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # scikit-learnのconfusion_matrixクラスで b = np.array([[251, 22, 1, 3, 0, 1, 3, 16, 24], [ 8, 459, 0, 2, 0, 1,…

【pandas】 DataFrameの操作について

Irisで試す # データCSVの読み込み iris = pd.read_csv("input.csv") # データのある特徴列を削除する iris.drop("Id", axis=1, inplace=True) # 同データのカウント # ”Species”という特徴列の名義特徴量の種類をそれぞれカウント iris["Species"].value_co…

【Python】 Jupyter notebookで実行に影響のない警告は無視する

warning.filterwarning("ignore")により警告を無視して進めることができる. import warnings warning.filterwarnings("ignore")

特徴量の削除

violinplotによって特徴量の分布が同じようなときjointplotによって, それらの特徴量の相関関係を調べる. 実際に相関係数の絶対値が1に近づいたらどちらかの特徴量を学習から削除することができるそう. 上図で2つの特徴量の分布が同じようなのでjointplotを…

【seaborn】 相関関係を可視化する

seaborn.jointplot(特徴量列1, 特徴量列2)で相関関係を見ることができる. 【参考】 ・http://blog.livedoor.jp/oyajieng_memo/archives/1524575.html

【seaborn】 plotについて

seabornライブラリでデータを可視化したい場合, BoxplotとViolinplotなどがある. ラベルAとラベルBの正規化, 標準化済の特徴量3つをとってきて比較することに用いられる. Boxplotでは下図のような図をプロットでき, 中央値などがわかりやすい. (図引用: http…

【pandas】 DataFrame.locについて

グラフの列の値を読み取る >>> df.loc[:,"feature1"] 0 0.71190 1 0.24160 2 0.45040 3 0.68690 4 0.40000 5 0.53550 6 0.37840 7 0.26780 8 0.53900 9 1.10500 10 0.14590

【pandas】 DataFrameの結合

pandas.DataFrame型のオブジェクトdf1,df2に対して # 縦方向の連結 pandas.concat([df1,df2]) # 横方向の連結 pandas.concat([df1, df2],axis=1) 【参考】 ・http://sinhrks.hatenablog.com/entry/2015/01/28/073327

【pandas】 DataFrame.iloc

DataFrameに対して列番号を指定する. 【参考】 ・http://ailaby.com/lox_iloc_ix/

【pandas】 DataFrame.describe()について

DataFrame.describe()はDataFrameに格納されているそれぞれの特徴量(横軸)に対して 数値データならcount, mean, std, min, 25%, 50%, 75%, maxを計算, カテゴリデータならcount, unique(カテゴリの種類), top(先頭), freq(最頻値)を計算してくれる便利な機能…

【pandas】 CSVの読み込み

csvファイルをpandas.DataFrameに格納する方法 # 読み込み csv_path = "./data.csv" data = pd.read_csv(csv_path) # データの表示(Jupyter notebookなどで) # .head()メソッドを使えば,先頭から5行が表示される data.head() # 特徴量の名前をリストとして取…

【pandas】 DataFrameから削除する

pandas.DataFrameは横軸が特徴量, 縦軸がデータの番号とするのが慣習らしい. >>> df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A', 'B', 'C', 'D']) >>> df A B C D 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 # 特徴量BとCを削除する >>> df.drop(["B",…