はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
MATLAB,Python,Scilab,Julia比較 その74【PID制御③】
PID制御の基本式を確認。 上記の積分を外側に追いやった変形式を確認。 積分を外側に追いやる方がワインドアップ対策がし易いので、こちらが使用されることが多い。
MATLAB,Python,Scilab,Julia比較 その73【PID制御②】
これまでの状態空間モデルの構成を確認。 オープンループ制御になっている。 今回の構成を確認。 PID制御でクローズループにする。 角速度ωをフィードバックすることで角速度制御をすることが分かる。
MATLAB,Python,Scilab,Julia比較 その72【PID制御①】
DCモータ状態空間モデルを制御すべくPID制御器を追加予定。 上記に至るロードマップ提示。 「PID制御器の離散化」がやや数式まみれになるためちょっと鬼門。 オイラー法による微分解法するだけなので比較的簡単にするつもり。
DCモータ状態空間モデルをJuliaでシミュレーション。 かなりMATLABと近似のコードになる。 linspaceがrangeになってるくらい。 シミュレーションも同一であり、想定通り。
【入門】状態空間モデル(DCモータ)Scilab【数値計算】
DCモータ状態空間モデルをScilabでシミュレーション。 演算自体はMATLABと同一。 差はグラフ表示の微調整のところ。 シミュレーションも同一であり、想定通り。
【入門】状態空間モデル(DCモータ)Python【数値計算】
DCモータ状態空間モデルをPython(Numpy)でシミュレーション。 流れとしてはMATLABと一緒。 状態空間モデルの演算用関数が変化しない特徴も一緒。 シミュレーションも同一であり、想定通り。
【入門】状態空間モデル(DCモータ)MATLAB【数値計算】
DCモータ状態空間モデルをMATLABでシミュレーション。 状態空間モデルを演算する関数自体はそのまま使い回し。 シミュレーションとしては想定通りの結果。
MATLAB,Python,Scilab,Julia比較 その71【状態空間モデル㉙】
DCモータ状態空間モデルをJuliaでシミュレーション。 かなりMATLABと近似のコードになる。 linspaceがrangeになってるくらい。 シミュレーションも同一であり、想定通り。
MATLAB,Python,Scilab,Julia比較 その70【状態空間モデル㉘】
DCモータ状態空間モデルをScilabでシミュレーション。 演算自体はMATLABと同一。 差はグラフ表示の微調整のところ。 シミュレーションも同一であり、想定通り。
MATLAB,Python,Scilab,Julia比較 その69【状態空間モデル㉗】
DCモータ状態空間モデルをPython(Numpy)でシミュレーション。 流れとしてはMATLABと一緒。 状態空間モデルの演算用関数が変化しない特徴も一緒。 シミュレーションも同一であり、想定通り。
MATLAB,Python,Scilab,Julia比較 その68【状態空間モデル㉖】
DCモータ状態空間モデルをMATLABでシミュレーション。 状態空間モデルを演算する関数自体はそのまま使い回し。 シミュレーションとしては想定通りの結果。
DCモータ状態空間モデルを導出するため以下を実施。 状態量の定義。 各種微分方程式。 微分方程式の変形。 状態方程式の作成。 出力方程式の作成。 確からしさはシミュレーションで確認。
MATLAB,Python,Scilab,Julia比較 その67【状態空間モデル㉕】
出力方程式を導出。 基本は、出力させたい項を出力行列で指定するだけ。 実験段階では全状態を見たいことが多いので全部出力指定にすることが多い。 各種行列を列挙。 シミュレーションしないと確からしさはわからないが、以前のシミュレーションコード使い回しでいけそう。 これが状態空間モデルの良いところ。
MATLAB,Python,Scilab,Julia比較 その66【状態空間モデル㉔】
状態量と各種微分方程式を再掲。 上記の情報から状態方程式を組み上げた。 表現がベクトル行列になっただけで、導出した微分方程式と一緒。 状態空間モデルも見慣れてしまえばそれほど不可思議なものではない。
MATLAB,Python,Scilab,Julia比較 その65【状態空間モデル㉓】
キルヒホッフの第2法則に則って電圧導出式を合体さえた。 単純に加算。 しかし、今回は逆起電力なので、結果的には引き算にはなる。 電流から電圧を求める式に変形。 電流が1階微分されているが、元々電流の1回微分が欲しいのでちょうど良い。
MATLAB,Python,Scilab,Julia比較 その64【状態空間モデル㉒】
各種必要な微分方程式を特定 角度→角速度、電流→角速度、を特定。 電圧→電流はオームの法則とキルヒホッフの第2法則の組み合わせで導出する。 とりあえず、電気回路として見た場合と、逆起電力の部分を特定。 次回これらを合体させる予定。
MATLAB,Python,Scilab,Julia比較 その63【状態空間モデル㉑】
状態空間モデルでもうちょっと複雑なものを取り扱う。 とりあえずDCモータを採用。 導出の流れは運動方程式の時と一緒。 まずは状態量を特定。 状態量の特定は入力から期待する出力に至るために必要なパラメータをイメージすると良い。
MATLAB、Python、Scilab、Julia比較ページはこちらはじめにの、MATLAB,Python,Scilab,Julia比較 その62【状態空間モデル⑳】を書き直したもの。ニュートンの運動方程式を状態空間モデルを離散化したもの
Juliaでベクトル、行列演算による状態空間モデルの演算実施。 MATLABとほぼ同一。 添え字、ドット演算子に違いあり。 シミュレーション結果も想定通り。
【入門】状態空間モデルで微分解決(Scilab)【数値計算】
Scilabでベクトル、行列演算による状態空間モデルの演算実施。 MATLABと同一。 グラフ表示の部分に差異があるだけ。 シミュレーション結果も想定通り。
【入門】状態空間モデルで微分解決(Python)【数値計算】
Python(Numpy)でベクトル、行列演算による状態空間モデルの演算実施。 流れとしてはMATLABと同一。 内積の演算子が「@」な点に注意。 シミュレーション結果も想定通り。
【入門】状態空間モデルで微分解決(MATLAB)【数値計算】
MATLABでベクトル、行列演算による状態空間モデルの演算実施。 導出した数式のまんまでコードが組める。 このルールに即していれば、さまざまな振る舞いを規定できる。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その62【状態空間モデル⑳】
Cコードによるベクトル、行列演算による状態空間モデルの演算実施。 MATLAB Coderで出力。 シミュレーション結果も想定通り。 コード自体は複雑になるが、多変量の微分方程式になった際に効果は大きくなる。
MATLAB,Python,Scilab,Julia比較 その61【状態空間モデル⑲】
Juliaでベクトル、行列演算による状態空間モデルの演算実施。 MATLABとほぼ同一。 添え字、ドット演算子に違いあり。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その60【状態空間モデル⑱】
Scilabでベクトル、行列演算による状態空間モデルの演算実施。 MATLABと同一。 グラフ表示の部分に差異があるだけ。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その59【状態空間モデル⑰】
Python(Numpy)でベクトル、行列演算による状態空間モデルの演算実施。 流れとしてはMATLABと同一。 内積の演算子が「@」な点に注意。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その58【状態空間モデル⑯】
MATLABでベクトル、行列演算による状態空間モデルの演算実施。 導出した数式のまんまでコードが組める。 このルールに即していれば、さまざまな振る舞いを規定できる。 シミュレーション結果も想定通り。
状態空間モデルの状態方程式と出力方程式の微分解決を実施。 基本的には状態方程式側の微分解決をし、その結果を出力方程式に代入する。 MATLAB、Python、Scilab、Juliaで上記をプログラムとして実装予定なので、よくわからん人は参照すべし。
MATLAB,Python,Scilab,Julia比較 その57【状態空間モデル⑮】
出力方程式の微分解決を実施。 とはいっても、出力方程式側には微分方程式は居ないのでxを代入しただけ。 これで、状態空間モデルのままで演算できる状態になったと言える。 しかし、これでもプログラム化のイメージは湧きにくい。 よって、次回から各ツール、各言語で書くとどうなるかを確認。
MATLAB,Python,Scilab,Julia比較 その56【状態空間モデル⑭】
状態空間モデルのまま微分解決可能なはず。 まずは状態方程式の微分解決を実施。 両辺を積分して、その後にオイラー法で微分解決。 とりえずはオイラー法でも精度が十分なことは多い。
状態空間モデルを使用せず、微分方程式のままシミュレーションを試みる。 Simulinkがあれば、ブロック図のままでもシミュレーションできるが…。 その後、ブロック図を離散化。 この段階でオートコード生成したりもする。 漸化式導出。 Cコード化とシミュレーション実施。 もっとも原始的なモデルベース開発?
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 実際の指数移動平均とは異なっているので、その点は注意。
勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。
今回改めてまじめに更新式を確認。 勾配降下法の更新式が一番シンプルなので今後の最適化アルゴリズムの更新式を見る際は比較対象になりやすい。
最適化アルゴリズムを取り扱う。 今回のネットワークだとさほど恩恵はないが知っていて損はない。 まずはモーメンタムから解説&実験をしてい 最初は復習を兼ねて勾配降下法についても確認する。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたJuliaコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたScilabコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたPythonコードで分類を実施。 大きく2パターンの分類パタ やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたMATLABコードで分類を実施。 大きく2パターンの分類パターン やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたJuliaコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたScilabコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたPythonコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたMATLABコードで分類を実施。 大きく2パターンの分類パターンがある やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を増やす。 表現力が上がるはず。 局所最適解にハマらないというより大域最適解に近い局所最適解が増えるというイメージ。 プログラム上の修正点確認。 ベクトル、行列演算ができるため修正範囲は極小。
多層パーセプトロンの隠れ層のユニット数を増やす。 表現力が上がるはず。 局所最適解にハマらないというより大域最適解に近い局所最適解が増えるというイメージ。 プログラム上の修正点確認。 ベクトル、行列演算ができるため修正範囲は極小。
非線形分類をしたが実は問題が発生している。 非線形分類が失敗する原因を特定するため決定境界線と誤差関数の推移をモニタ。 案の定、局所最適解にハマってる。 つまりエポック数を増やしても対策にはならない。 隠れ層のユニット数を増やす、最適化アルゴリズムを使用するのが対策案。
非線形分類が失敗する原因を特定するため決定境界線と誤差関数の推移をモニタ。 案の定、局所最適解にハマってる。 つまりエポック数を増やしても対策にはならない。 隠れ層のユニット数を増やす、最適化アルゴリズムを使用するのが対策案。
非線形分類をしたが実は問題が発生している。 20%くらいの確率で分類ができない。 原因がわかるように誤差関数の推移や決定境界線の推移のアニメーションを見てみる予定。
多層パーセプトロンによる分類をJuliaで実施。 一応ちゃんと分類できた。
多層パーセプトロンによる分類をScilabで実施。 一応ちゃんと分類できた。 等高線による分類表記がうまく行かなかったため、境界線をplotしている。
正規方程式による多項式回帰分析をPython(NumPy)で実施。 誤差はあるものの目的の係数の算出はできている。
正規方程式による多項式回帰分析をMATLABで実施。 誤差はあるものの目的の係数の算出はできている。
正規方程式による多項式回帰分析をJuliaで実施。 誤差はあるものの目的の係数の算出はできている。 コード自体はMATLABコードのほぼ 等差数列、plotのオプション周りの合わせこみはした。
正規方程式による多項式回帰分析をScilabで実施。 誤差はあるものの目的の係数の算出はできている。 コード自体はMATLABコード plot部分の微調整が無かったんで。
正規方程式による多項式回帰分析をPython(NumPy)で実施。 誤差はあるものの目的の係数の算出はできている。
正規方程式による多項式回帰分析をMATLABで実施。 誤差はあるものの目的の係数の算出はできている。
正規方程式を使って多項式回帰分析を行う。 多項式回帰分析の二乗和誤差関数の定義。 正規方程式の各成分の定義。 サンプリングデータは特定の多項式に±1の乱数を載せたものを使用。 特定の多項式と近い係数が求まればOK。
正規方程式を使って多項式回帰分析を行う。 多項式回帰分析の二乗和誤差関数の定義。 正規方程式の各成分の定義。 サンプリングデータは特定の多項式に±1の乱数を載せたものを使用。 特定の多項式と近い係数が求まればOK。
正規方程式による重回帰分析をScilabで実施。 誤差はあるものの目的の係数の算出はできている。 3Dグラフの散布図はscatter3d。 3D散布図はVersionによっては表現できなかったら関数名が違ったりするので注意が必要。
正規方程式による重回帰分析をPython(NumPy)で実施。 誤差はあるものの目的の係数の算出はできている。 3Dグラフの散布図はscatter3D、平面関数はplot_wireframeを使用して表現する。 projection='3d'のオプションを忘れずに。
正規方程式による重回帰分析をMATLABで実施。 誤差はあるものの目的の係数の算出はできている。 3Dグラフの散布図はscatter3、メッシュ状の平面関数はmeshを使用して表現する。
正規方程式による重回帰分析をScilabで実施。 誤差はあるものの目的の係数の算出はできている。 3DグラフはPython寄りの仕様。 PyPlotがmatplotlibのラッパーであるため。
正規方程式による重回帰分析をScilabで実施。 誤差はあるものの目的の係数の算出はできている。 3Dグラフの散布図はscatter3d。 3D散布図はVersionによっては表現できなかったら関数名が違ったりするので注意が必要。
正規方程式による重回帰分析をPython(NumPy)で実施。 誤差はあるものの目的の係数の算出はできている。 3Dグラフの散布図はscatter3D、平面関数はplot_wireframeを使用して表現する。 projection='3d'のオプションを忘れずに。
正規方程式による重回帰分析をMATLABで実施。 誤差はあるものの目的の係数の算出はできている。 3Dグラフの散布図はscatter3、メッシュ状の平面関数はmeshを使用して表現する。
正規方程式を使って重回帰分析を行う。 重回帰分析の二乗和誤差関数の定義。 正規方程式の各成分の定義。 サンプリングデータは特定の多項式に±1の乱数を載せたものを使用。 特定の多項式と近い係数が求まればOK。
正規方程式を使って重回帰分析を行う。 重回帰分析の二乗和誤差関数の定義。 正規方程式の各成分の定義。 サンプリングデータは特定の多 特定の多項式と近い係数が求まればOK。
正規方程式による単回帰分析をJuliaで実施。 MATLABと同じ結果が得られた。 演算部分はMTALABと同一。 ベクトル化演算子であるdot演算子を利用する局面はある。
正規方程式による単回帰分析をScilabで実施。 MATLABの演算と同じ結果が得られた。 計算部分は全く一緒。 グラフ表示部の微調整の仕方が違う。