Python

-Keras- Keras のテスト

Keras が動作するかをテストしてみます.テストはJupyter Notebookを使って行います. テストには,keras 作者の Fchollet さんが用意してくれている exapmle で MNIST データセット*を学習するもの mnist_cnn.py **を一部変更して試します. 実行結果は以下…

-Keras- Windows10にTensorFlow と Keras をインストール

セットアップ作業の中心となるのが Anaconda Prompt です. Windows のメニューの Anaconda3 (64-bit) のところに Anaconda Prompt がありますので起動します. 今回は mykeras という名前の環境を作ってそこにセットアップしてみることにします.Anaconda P…

-Python- cvxoptのインストール

cvxoptをインストールした際のメモです. Anacondaをインストールした環境下であることが前提です.インストールはターミナルから以下のコマンドを実行するだけです. $ conda install -c conda-forge cvxopt すると,インストールが始まります.

-Python- Jupiter notebook のエラー 'AttributeError: type object ‘IOLoop’ has no attribute ‘initialized’'

ターミナルから jupyter notebook を起動しようとするとエラーが発生することがあります. エラーメッセージは,以下の通り. AttributeError: type object 'IOLoop' has no attribute 'initialized' これは,pyzmqとtornadoのバージョンが競合していること…

-Python- Jupyter notebookのフォントを変更する

Jupyter notebookのデフォルトのフォントは等幅ではないので,普段等幅フォントでコードを書いていると,違和感を覚えます. デフォルトのフォントを変更するには custom.css (ファイルはデフォルトでは ~/.jupyter/custom/custom.css にあります) に以下…

The Zen of Python (Python公案)

Pythonの哲学を示す"The Zen of Python by Tim Peters"というものがあることを知りました. 対話型インタープリターに"import this"と入力すると見ることができます. >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Exp…

-Deep Learning- Softmax-with-Lossレイヤ

入力された値を正規化して出力するSoftmax関数の損失関数として交差エントロピー誤差(cross entropy error)を用いた場合のSoftmax-with-Lossレイヤの実装例を以下に示します. class SoftmaxWithLoss: def __init__(self): self.loss = None # Loss self.y…

-Deep Learning- バッチ版Affainレイヤの実装

N個のデータをまとめて順伝播する場合(バッチ-データのまとまり-版のAffineレイヤ)の具体例を以下に示します. >>> import numpy as np >>> X_dot_W = np.array([[0, 0, 0], [10, 10, 10]]) >>> B = np.array([1, 2, 3]) >>> >>> X_dot_W array([[ 0, 0, 0…

-Deep Learning- ReLUレイヤ,Sigmoidレイヤの実装

活性化関数の実装例を以下に示します. ReLUレイヤ class Relu: def __init__(self): self.mask = None def forward(self, x): self.mask = (x <= 0) out = x.copy() out[self.mask] = 0 return out def backward(self, dout): dout[self.mask] = 0 dx = dou…

-Deep Learning- レイヤの実装

ニューラルネットワークを構成するレイヤを一つのクラスで実装する例を以下に示します.レイヤは,ニューラルネットワークにおける機能の単位です. 実装,および設定については,ゼロから作るDeep Learningの5.4 単純なレイヤの実装を参考にしています. ま…

-Deep Learning- ミニバッチ学習の実装

ニューラルネットワークの学習の実装は,ミニバッチ学習で行います.ミニバッチ学習とは,トレーニングデータから無作為に一部のデータを取り出して(ミニバッチ),そのミニバッチを対象に,勾配法によりパラメータを更新します. 以下に,プログラミング例…

-Deep Learning- 学習アルゴリズムの実装

2層ニューラルネットワークの実装例を以下に示します. ニューラルネットワークのクラスをTwoLayerNetという名前のクラスで,以下のように実装します. # Import Module import numpy as np # Definition of Function def sigmoid(x): return 1 / (1 + np.ex…

-Deep Learning- ニューラルネットワークにおける勾配

ニューラルネットワークの学習においては,勾配を求める必要があります.この勾配とは,重みパラメータに関する損失関数の勾配のことです.例として,2 x 3の重みWを持つニューラルネットワークと損失関数をLで表す場合を考えます. 以下に,簡単なニューラ…

-Deep Learning- 勾配法

機械学習の問題の多くは,学習の際に最適なパラメータを探索します.ニューラルネットワークも同様に最適なパラメータ(重みとバイアス)を学習時に見つける必要があります.ここで言う最適なパラメータとは,損失関数が最小値を取る時のパラメータの値です…

-Deep Learning- 推論を行うニューラルネットワーク

前回の投稿で読み込んだMINSTデータセットに対して推論処理を行うニューラルネットワークを実装する例を以下に示します. ネットワークは,入力層を784個,出力層を10個のニューロンで構成します.入力層の784個は,画像サイズの28 x 28 = 784からきています…

-Deep Learnin- 手書き数字認識

ニューラルネットワークの推論処理の実装例を,手書き数字画像の認識を例として以下に示します. 使用するデータセットはMINSTです. ここでは,MINIST データセットのダウンロードから画像データのNumpy配列への変換までをサポートしてくれる,書籍ゼロから…

-Deep Learning- バッチ処理

前回 までにMINSTデータセットを用いたニューラルネットワークの実装例を示しました. 今回は,まずはPythonインタプリタを使用して,ニューラルネットワークの各層の重み形状を出力してみます. >>> x, _ = get_data() >>> network = init_network() >>> W1…

-Deep Learning- 出力層の活性化関数

ニューラルネットワークは,分類問題,回帰問題の両方に用いることが可能です.ただし,分類問題なのか,回帰問題なのかで,出力層の活性化関数を変更する必要があります. 一般的に,回帰問題では恒等関数を,分類問題ではソフトマックス関数を用います(入…

-Deep Learning- 活性化関数

ステップ関数の実装例を以下に示します. まずは,ステップ関数の実装のためにまずは,Pythonインタプリタを用いての例を示します.以下の例では,x というNumPy配列を用意し,そのNumPy配列に対して不等号による演算を行なっています. >>> import numpy as…

-Deep Learning- パーセプトロンの実装

まずは,以下にANDゲートの実装例を以下に示します. # Definition of Class # AND Gate def AND(x1, x2): w1, w2, theta = 0.5, 0.5, 0.7 tmp = x1 * w1 + x2 * w2 if tmp <= theta: return 0 elif tmp > theta: return 1 # Execution part print(AND(0, 0)…

-Python- 2乗和誤差(mean squared error)と交差エントロピー誤差(cross entropy error)

損失関数*として用いられる関数にはいくつかありますが,最も有名なものは2乗和誤差(mean squared error)です.2乗和誤差は以下の数式で表されます. 深層学習では,ykはニューラルネットワークの出力,tkは教師データを表し,kは次元数を表します.上記の…

-Python- サポートベクターマシン

サポートベクターマシンの実装例を以下の示します. import numpy as np from operator import itemgetter class SVC: def fit(self, X, y, selections=None): a = np.zeros(X.shape[0]) ay = 0 ayx = np.zeros(X.shape[1]) yx = y.reshape(-1, 1)*X indices…

-Python- ロジスティック回帰

二値分類に使われるアルゴリズムであるロジスティック回帰のプログラム例を以下に示します. import numpy as np from scipy import linalg THRESHMIN = 1e-10 def sigmoid(x): return 1 / (1 + np.exp(-x)) class LogisticRegression: def __init__(self, t…

-Python- 汎化,過学習

最初に多項式回帰のアルゴリズムを示します.多項式回帰とは,入力変数 に対して出力 が の多項式関数で表されるというモデルです.簡単のために,入力が1次元と仮定し,多項式の次数が で与えられるとします. ここで,はノイズを表します.このとき線形回…

-Python- リッジ回帰

線形回帰で最小化する目的関数に,パラメータの大きさの項を足して回帰を行うのがリッジ回帰です.リッジ回帰では以下の関数を最小化するようなwを決定します. この計算を実装し,可視化するスクリプトは以下のようになります. # Import Module import num…

UCI Machine Learning Datasets を使った回帰

UCI Machine Learning Datasetsの中のWine quality(ワインについて測定された数値とその品質(1 - 5))*を使って測定値から品質を予測するモデルを作ってみます. # Import Module import numpy as np from scipy import linalg # Definition of Class cla…

-Python- ニュートン法

方程式 をNewton法で解いてみるスクリプトを考えます. # Definition of Function def newton1dim(f, df, x0, eps = 1e-10, max_iter = 1000): x = x0 iter = 0 while True: x_new = x - f(x)/df(x) if abs(x - x_new) < eps: break x = x_new iter += 1 if …

-Python- 勾配降下法

下式のような制約条件のない最適化問題を考えます. Minimize ここで,[TeX: f(x, y) = 5x^2 - 6xy + 3y^2 + 6x -6y] とし,[TeX: f(x, y) = k] を満たす点の集合を考えます. f の勾配は となり,点においては,その点を通る等高線の接戦に垂直方向で,kが…

-Python- 2次計画法

2変数の2次関数 の最小値を求めることを考えます.このような問題は2次計画問題と言います.以下ではPythonのcvxopt パッケージを使います. ライブラリの関数に有力するには標準形に変換しなければなりません.cvxopt では制約条件なしの2次計画問題の標準…

-Python- SciPy 線形計画問題

数理最適化は,与えられた制約の中で,ある関数の値を最大化(あるいは最小化)する問題です.数理最適化問題の基本として,まずは線形計画問題を考えます. 一般には,n変数の場合に線形計画問題を考えることができます. n次元ベクトルxを変数とすると,線…