旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

Python

【Python】 Kerasでpix2pixを試す

先日U-Netによるセグメンテーションを試した(【Python】 KerasでU-Net構造ネットワークによるセグメンテーションをする - 旅行好きなソフトエンジニアの備忘録)のですが、ついでにDiscriminatorを作ればpix2pixを試せるということで、作ってみました。U-Ne…

【Python】 KerasでU-Net構造ネットワークによるセグメンテーションをする

ここ(Daimler Pedestrian Segmentation Benchmark)から取得できるデータセットを使って、写真から人を抽出するセグメンテーション問題を解いてみます。U-Netはここ( U-Net: Convolutional Networks for Biomedical Image Segmentation )で初めて発表され…

【Python】 PythonでC#のFileSystemWatcher相当のクラスを作成する

C#側がファイルを作成し、それをトリガとしてpythonが起動するようにしたいと思っています。そのため、C#のFileSystemWatcherに相当するようなクラスが欲しいと思ったのですが、以下のサイトに書かれていました。 qiita.com import time from watchdog.obser…

【Python】 動的なデフォルト引数を指定するときにはNoneとドキュメンテーション文字列を使う

書籍”Effective Python”項目15のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。 Pythonはデフォルト引数をモジュールロード時の一回しか評価しないので、動的な値…

【Python】 クロージャ内外で変数を共有する

書籍”Effective Python”項目15のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。 Pythonにはnonlocalというキーワードがあり、これによりクロージャ内外でデータを…

【Python】 サーバーの現在時刻を取得する

Raspberry PiからサーバーのMySQLデータベースにセンサデータを書き込む時に、センサデータ取得時刻も書き込んでいるのですが、Raspberry Pi側の現在時刻がやたらずれるため、サーバーの現在時刻を取得して補正しておくことにしました。サーバーの現在時刻を…

【Python】 enumerateのカウンタ初期値を設定する

書籍”Effective Python”項目10のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。 enumerateは知っていたのですが、カウンタの初期値を第二引数で設定できることを…

【Python】 ジェネレータ式の生成

書籍”Effective Python”項目9のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。 リスト内包表記は入力が大量な時に膨大な量のメモリを消費しかねない問題があるとの…

【Python】 リストから一つおきにデータを取り出す

書籍”Effective Python”項目6のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。 サンプリングレートが高すぎるセンサのデータ数を減らしたいことがあったので、この…

【Python】 リストのコピー方法

書籍”Effective Python”項目5のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。 リストのスライスの時に添え字startとendを省略するとコピーになる。 a = [1, 2, 3,…

【Python】 PEP8スタイルガイドに従う

書籍”Effective Python”項目2のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。 名前付けの規約 関数、変数、属性 ⇒ lowercase_underscore protected属性 ⇒ _leadin…

【Python】 LSTMによる時系列データの予測

前回SimpleRNNによる時系列データの予測を行いましたが、今回はLSTMを用いて時系列データの予測を行ってみます。 ni4muraano.hatenablog.com LSTMはSimpleRNNと比較すると長期依存性の高いデータに有効とのことなので、50回に一回パルスが発生する信号に対す…

【Python】 SimpleRNNで月平均気温を予測する

画像だけでなく時系列データにも手を出してみたい、ということで書籍「詳解ディープラーニング」を購入しました。書籍第5章から時系列データを扱っているのですが、そこで紹介されているSimpleRNNの例を写経します。書籍ではノイズの入ったサイン波の予測を…

【Python】 ndarrayのインデキシング

書籍「科学技術計算のためのPYTHON入門」のメモです。ndarrayのインデキシングについて今まで何も意識せず使っていたのですが、書籍にまとめられていたのでメモします。 基本インデキシング(ビューが生成される) # ndarray_viewの変更がndarrayにも影響を…

【OpenCV】 forループを使わずに指定した色を別の色に変更する

ディープラーニングの前処理として、画像のある色を別の色に変更しようとしていました。ただ、NumPyではforループをなるべく使用しないことが推奨されているため、どうやって実現すれば良いのか悩んでいましたが、ここ(Replace a range of colors with a sp…

【Python】 行列積の演算子

行列積はNumPyのdotメソッドを利用しますが、Python3.5/NumPy1.10からは@演算子でも行列積を表現できると知ったのでメモします。 import numpy as np A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) # a_dot_bとa_at_bは同じ結果になります…

【Python】 csv数値データファイルの読み書き

csv数値データファイルの読み書きはnumpyを使うと簡単にできます。 import numpy as np # csvファイルの読み込み(ヘッダがある場合はskiprowsを1にする) data = np.loadtxt('file.csv', delimiter=',', skiprows=0) # csvファイルへの書き込み(%0.2fで小…

【Python】 "Deep Learning Prerequisites: The Numpy Stack in Python" Lecture13のメモ

udemyで無料オンラインコースがいくつかあるのですが、Numpyの無料講座を受講中です。その中で知らなかった事をメモしておきます。 www.udemy.com レクチャー13からPandasの話になるのですが、Pandasは使えた方が良いのでしょうか。。。今のところ特に困って…

【Python】 "Deep Learning Prerequisites: The Numpy Stack in Python" Lecture10のメモ

udemyで無料オンラインコースがいくつかあるのですが、Numpyの無料講座を受講中です。その中で知らなかった事をメモしておきます。 www.udemy.com 1. 線形方程式はnp.linalg.solveで解ける import numpy as np A = np.array([[1,2], [3,4]]) b = np.array([3…

【Python】 "Deep Learning Prerequisites: The Numpy Stack in Python" Lecture4のメモ

udemyで無料オンラインコースがいくつかあるのですが、Numpyの無料講座を受講中です。その中で知らなかった事をメモしておきます。 www.udemy.com 1. ベクトルのユークリッドノルムの計算はnp.linalg.normで出来る import numpy as np vec = np.array([1, 2,…

【Python】 OSに依存しないフォルダ・ファイルパスの書き方

ディープラーニング関連の論文あるネットワークを試してみたい時、誰かが既に作成してくれていることが多くて助かります。ただ、ソースを自分の環境に落として動かそうとするとエラーになることも多く、原因の一部はOSに依存した書き方があったため、という…

【Python】 KerasでResNet等のショートカット構造を実装する

Kerasでは学習済みのResNetが利用できるため、ResNetを自分で作ることは無いと思います。ただ、ResNet以外にも下の写真のようなショートカット構造を持つネットワークがあり、これらを実装したい時にどのように作成するかをメモします。 単純なネットワーク…

【Python】 二次元データを一次元データに変換する

import numpy as np # one_dimの変更はtwo_dimに影響を与えない two_dim = np.array([[1, 2], [3, 4]]) one_dim = two_dim.flatten() import numpy as np # one_dimの変更はtwo_dimに影響を与える two_dim = np.array([[1, 2], [3, 4]]) one_dim = two_dim.r…

【Python】 リストの初期サイズを指定する

意外と知らなかった。。。 # リストのサイズを1000確保する y = [0.0]*1000

【Python】ファイル名と拡張子を分ける

import os.path file_name, extension = os.path.splitext(file_name_with_extension)

【Python】 KNNによるデータの分類

書籍「PYTHON機械学習プログラミング」のKNNによるデータの分類例をメモします。 # -*- coding: utf-8 -*- import numpy as np from matplotlib.colors import ListedColormap from matplotlib import pyplot as plt from sklearn.neighbors import KNeighbo…

【Python】 SVMによるデータの分類

書籍「PYTHON機械学習プログラミング」を読んでいて、SVMによるXORデータの分類例があったのですが、分類結果をグラフ化する部分が勉強になったのでメモします。 # -*- coding: utf-8 -*- import numpy as np from matplotlib.colors import ListedColormap …

【Python】 Kerasで中間層を可視化する

Kerasを利用してネットワーク中間層を可視化する方法をメモします。プログラムでは学習済みのモデルと重みがある事を想定し、それらを読み取って一層目の中間層であるConvolution2Dの重みを可視化しています。 import numpy as np from keras.models import …

【Python】CIFAR-10画像データを扱う

AlexNet等の実験でCIFAR-10(CIFAR-10 and CIFAR-100 datasets)を利用することがあります。幸いKerasにはデフォルトでCIFAR-10の画像データを取り込む関数があるのですが、諸事情によりこれが利用できなかったのでCIFAR-10を扱うための関数を作成しました。…

【Python】 Kerasでモデルを図に保存する

Kerasでは作成したモデルはここ(可視化 - Keras Documentation)にあるように簡単に図として保存できるはず、と思ったのですが予想外のトラブルに見舞われたので解決方法をメモします。環境は以下の通りです。 Windows 7 Anaconda 4.2.0 Python 3.5 トラブ…

【Python】 KerasでLeNet5っぽいネットワークを作成する

ディープラーニングの原点と言われるLeNet5(http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf)をKerasで実装し、MNISTの手書き文字を学習させました。LeNet5は以下の構造になっています。 “LeNet5っぽい"とタイトルに書いたのは、完全に論文通りには…

【Python】 MNIST手書き文字データを扱う

手書き文字のサンプルがダウンロードできる"THE MNIST DATABASE of handwritten digits"(MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges)ですが、gzファイルをダウンロードした後のデータ処理ロジックをメモします。mnis…

【Python】 OpenCVのモジュールをインポートすると"ImportError: DLL not found."というエラーが出る

(Visual Studioをインストールしていない)Windows7/Anaconda4.2.0 for Python3.5という環境で conda install –channel https://conda.anaconda.org/menpo opencv3 を実行してopencv3をインストールしたのですが、import cv2のところで"ImportError: DLL no…

【Python】 区切り文字を複数指定して文字列を分割する

C#のSplitメソッドと異なりPythonのSplitメソッドは区切り文字を一つしか指定できないようです。区切り文字を複数指定したい場合はreモジュールを利用する必要があります。 import re str = 'a,b.c_d-e' re.split('[,._-]', str) # ['a', 'b', 'c', 'd', 'e'…

【Python】 int⇔bytes変換

int ⇒ bytes num = 255 num.to_bytes(2, 'big') # 2バイト、ビッグエンディアン、b'\x00\xff'と出力される bytes ⇒ int int.from_bytes(b'\x00\xff', 'big') # 255と出力される Python3.2以降で利用可能なメソッドのようです(python3ならintとbytesの変換が…

【Python】 pipでconnect timeoutが発生する

会社でpipをするとタイムアウトに。。。単純にプロキシの問題で、こちらの情報(pythonメモ proxy下でのpip、easy_install - Qiita)に助けていただきました。 pip install pycrypto –proxy=user@proxy.hoge.jp:port

【Python】 特異スペクトル解析法の実装

特異スペクトル解析法をPythonで実装したのでメモします。書籍「信号解析 馬杉著」からの引用ですが、 特異スペクトル解析法(singular spectrum analysis)は、観測信号からの主要な変動成分の分離・抽出、観測信号の変化点や不規則点の検出、観測信号から…

【Python】 KerasのConvolution2Dの引数border_modeについて

KerasのConvolution2Dを使う時にborder_modeという引数があり、'valid'と'same'が選択できるのですが、これが何なのかを調べるとStackExchangeに書いてありました(convnet - border_mode for convolutional layers in keras - Data Science Stack Exchange…

【Python】 KerasでXOR回路を作成する

Kerasを使ってXOR回路を作成するというのは実用性はありませんが、自分がKeras初心者のため「とにかく簡単なサンプルが欲しい」と思い作成しました。まず、XOR回路は下記のようになります。 ここでは入力に対して出力が下記表のようになるよう、図中のの値を…

【Python】 粒子群最適化法による最適化

粒子群最適化法による大域的最適化を行うクラスを実装します。粒子群最適化法は ハイパーパラメータが少ないので扱いやすい 単峰性が強い関数の最適化に向いている といった特徴を持っています。最適化問題は慣例として"目隠しした登山家が山の頂上をどうに…

【Python】 フォルダ内の特定のファイルを取得する

C#のDirectory.GetFilesに相当するPythonの関数を探したのでそのメモ。 フォルダ内のファイル名一覧を取得する import os files = os.listdir('Folder\\') for file_name in files: print(file_name) 実行結果例 a.txt b.txt c.txt d.docx フォルダ内のテキ…

【Python】 二つのリストの対応関係を保ったままシャッフルする

リストx=[1,2,3,4]があったとして、このxと対応関係にあるリストy=[11,12,13,14]があったとします。xをシャッフルしたいのですが、この時yも対応関係を保ったままシャッフルしたいと考えています。例えばリストxがシャッフルによりx=[3,2,4,1]となった場合、…

【Python】 matplotlibの使用例

matplotlibの使用例をメモしておきます。月別の東京の平均気温を表示する例を示しています。平均気温を棒グラフや散布図を使って表すことは無いと思いますが、あくまでも使い方に焦点を当てているためご容赦下さい。 折れ線グラフ import numpy as np from m…