無限不可能性ドライブ

『ニューラルネットワーク自作入門』に刺激されてExcelVBAでニューラルネットワークを作ってみたものの、やっぱり数学やらなきゃと思い少しずつやってきたのもあって、自分の知識の整理とかそういった感じです。

VBA

【VBA】リネームする

VBA

面白そうだったのでチャレンジしてみました。暇なVBAerに課題置いておきます。a列のファイル名を、ランダムに並び替えた結果をb列に出力した後、aからbのファイル名に一括変更するマクロを書いてみてください。さらに、変更後にミスを発見したときの為に、元…

【VBA】文字色やセル色に文字を埋め込む(抽出編)

VBA

Public Sub 文字列を抽出する() Dim txt As String Dim r As Long Dim lngRGB As Long r = 1 txt = "" Do txt = txt & decodeChar(Cells(r, 1).Font.Color) txt = txt & decodeChar(Cells(r, 1).Interior.Color) r = r + 1 Loop Until Cells(r, 1).Font.Colo…

【VBA】文字色やセル色に文字を埋め込む(埋め込み編)

VBA

Option Explicit Public Sub 文字列を埋め込む() Dim txt As String Dim ch As String Dim i As Long, r As Long Dim lngR As Long, lngG As Long, lngB As Long Dim sw As Long Dim ascCode As Long txt = "Hello" & vbNewLine & "World !" r = 1 Columns(1…

【VBA】2進数を文字列に変換する(前回の続き)

VBA

Option Explicit Public Sub 読み込んだ2進数を文字列に変換() Dim filePath As String Dim fileNo As Long Dim txt As String Dim txts() As String Dim i As Long filePath = ThisWorkbook.Path & "\binary.dat" fileNo = FreeFile Open filePath For Inpu…

【VBA】文字列を2進数に変換してファイル保存する

VBA

Option Explicit Public Sub 文字列を2進数に変換して保存() Dim filePath As String Dim fileNo As Long Dim txt As String txt = "userid" & vbCrLf & "password" txt = encode(txt) filePath = ThisWorkbook.Path & "\binary.dat" fileNo = FreeFile Open…

【VBA】パスワードを生成する

VBA

Option Explicit 'セルに表示させるときは一文字目が = だと 'エラーになるので注意 Public Sub パスワード生成() Debug.Print createPassword(8) End Sub Private Function createPassword(ByRef pwLength As Long) As String Dim asciiCode As Long Dim pw…

【VBA】パスワードをハッシュ化する

VBA

Option Explicit Public Sub ハッシュ値取得() Dim pw As String Dim hash As String Dim filePath As String Dim fso As Object Range("B1").Clear pw = Range("A1").Value If pw = "" Then Exit Sub End If 'パスワードを書き込んだテキストファイルを生成…

(お題)式を解析して導関数を求める

VBA

面白そうなお題があったので挑戦。お待たせしました!今回は初出題ということで、まずは私が好きなテーマで!スキルアップできそうな問題は次から載せていきます!!VBAで解決してくださいね。お題:「y = 5x^3 + 2x^2 + 7x + 5」の導関数を求めろ!文字列解…

【VBA】文字を隠したいならセルの色に埋め込んじゃえばいいじゃない…

VBA

!!ノンプロ研企画アドベントカレンダー!! こちらは私が所属しているコミュニティ「ノンプログラマーのためのスキルアップ研究会」通称「ノンプロ研」の年末特別企画、ノンプロ研 Advent Calendar 2019 の17日目の記事として投稿しています。 adventar.or…

【VBA編】ニューラルネットワーク(マクロの登録)

マクロの登録 各ボタンにマクロを登録します。 ボタン プロシージャ名 データ読み込み Click_データ読み込み 重みクリア Click_学習状況クリア 学習開始 Click_学習開始 テスト開始 Click_テスト開始 データ読み込み C2セル、C3セルをダブルクリックして、デ…

【VBA編】ニューラルネットワーク(mdlSupervisor)

スーパーバイザ メインの処理となるモジュールです。 '[mdlSupervisor - 標準モジュール] Option Explicit Option Base 1 Dim mcInLayer As classInputLayer Dim mcHLayer1 As classHiddenLayer Dim mcHLayer2 As classHiddenLayer Dim mcOutLayer As classO…

【VBA編】ニューラルネットワーク(classOutputLayer)

出力層クラス 出力層のユニットを管理するクラスです。 '[classOutputLayer - 出力層クラス] Option Explicit Option Base 1 Dim mUnitList() As classUnit 'ユニット格納用リスト Dim mUnitCount As Long '自レイヤーのユニット数 Dim mAct As Long '活性関…

【VBA編】ニューラルネットワーク(classHiddenLayer)

隠れ層 隠れ層のユニットを管理するクラスです。 '[classHiddenLayer - 隠れ層クラス] Option Explicit Option Base 1 Dim mUnitList() As classUnit 'ユニット格納用リスト Dim mUnitCount As Long '自レイヤーのユニット数 Dim mAct As Long '活性関数の種…

【VBA編】ニューラルネットワーク(classInputLayer)

入力層のユニット管理 入力層のユニットを管理するためのクラスです。 '[classInputLayer - 入力層のユニットを管理するためのクラス] Option Explicit Option Base 1 Dim mInUnitList() As classInputUnit 'ユニット格納用リスト Dim mInUnitCount As Long …

【VBA編】ニューラルネットワーク(classInputUnit, classUnit)

入力層のユニットクラス 入力層のみ実装が異なります。 '[classInputUnit - 入力層のユニットクラス] Option Explicit Dim mX As Double '入力データをセットする '[引数] <- inputData : Double / 入力データ Public Property Let X(ByRef aInputData As Do…

【VBA編】ニューラルネットワーク(ML)

演算用モジュール 活性化関数や損失関数を実装します。 '[ML - マシンラーニング演算用モジュール] Option Explicit Option Base 1 '活性化関数 ReLU '[引数] <- aU : Double / ユニットの u '[戻り値] -> actReLU : Double / ReLU適用後の値 Public Functio…

【VBA編】ニューラルネットワーク(ws_Main, G, mdlReadData)

ファイル指定処理 読み込むデータのCSVファイルを指定するコードです。 「ws_Main」シートに記述します。 '[ws_Main - シートオブジェクト] Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim filePa…

【VBA編】ニューラルネットワーク(メイン画面)

メイン画面 celaeno42.hatenablog.com メイン画面の数式 数式はこのように入っています。 C列の値はとりあえずこんな感じで。 モジュールとシート 必要な標準モジュール、クラスモジュールは以下の通りです。【標準モジュール】 オブジェクト名 用途 G 定数…

【VBA編】ニューラルネットワーク(全コード)

全コード掲載 なかなか更新の時間がとれず、ずいぶんと放置してきてしまい、未完に終わってしまうのも何なのでいくつかに記事を分けて全コードを載せていきます。 概要とデータ celaeno42.hatenablog.com メイン画面 celaeno42.hatenablog.com ws_Main, G, m…

ExcelVBAで強化学習(Q学習)を実装して迷路を解いてみる

※※ Qiitaの記事へのリンクと駄文です ※※ 強化学習ことはじめ 強化学習の勉強を始めたものの何の話をしているのかいまいちよくわからなくなっていたところで、『つくりながら学ぶ!深層強化学習 -PyTorchによる実践プログラミング-』を手に取ってみたところ、…

【VBA編】(順伝播)動作確認(2)

順伝播の実行 前回は順伝播の動作確認で必要な部分のコードを追加しました。 今回は、実際にデータを読み込んで順伝播の処理を行い、結果を表示させてみます。 celaeno42.hatenablog.com データの準備 使用するデータは以前の記事で準備しています。celaeno4…

【VBA編】(順伝播)動作確認(1)

動作確認 前回までで順伝播については入力から出力まで計算できるようになりました。celaeno42.hatenablog.comここまででいったん正しく動作するかを確認してみましょう。 ただ、その前にコードをいくつか追加しておきます。 それぞれ「----追加----」の部分…

【VBA】文字列をいい感じに改行してみる

VBA

面白そうなチャレンジだったのでやってみました。ExcelのLENとかLENBって、全角も半角もおんなじだから、漢字とひらがなカタカナと半角英数が混じった文字をだいたい見た目同じあたりで改行するってコード書くのかなりめんどいのな。諦めた。— fishb (@dampe…

【VBA】画像ファイルを(意図的に)壊して不慮の事故を防ぐ あるいは暗号化してみる(2)

VBA

前回は1つのファイルだけを書き換えましたが、今回はフォルダ内の画像を一括変換する処理を書いていきましょう。celaeno42.hatenablog.comなお、ここでは「ファイルを壊す」ことを(説明の都合上)「暗号化」と表現することにします。 まずはフォルダの選択…

【VBA】画像ファイルを(意図的に)壊して不慮の事故を防ぐ あるいは暗号化してみる(1)

VBA

俺の嫁フォルダががが… あ!ちょっ…そのフォルダは開けちゃだめ!!なんてことがあったりなかったりするかもしれませんが、そういう場合に慌てないようにあまり見られたくない画像ファイルなんかは暗号化とかしておくとそういった不慮の事故が防げるかもしれ…

【VBA編】(順伝播)出力層の作成

出力層 前回は隠れ層のクラスを作成しました。今回は出力層用のクラスを作成します。なお、今回のコードは隠れ層とほとんど同じです。 celaeno42.hatenablog.com 出力層の初期化 隠れ層同様、初期化処理を作ります。コードは「classOutputLayer」に記述しま…

【VBA編】(順伝播)隠れ層の作成

レイヤークラス 前回はユニットクラスを作成しました。今回からはユニットを管理するレイヤークラスを作成していきます。 入力層は以前こちらで作成しました。 celaeno42.hatenablog.com隠れ層と出力層がありますが、若干機能が異なるので今回は別々に実装し…

【VBA編】(順伝播)ユニットの作成

ユニット ニューラルネットワークの基本となる単位です。隠れ層、出力層のユニットは基本的には同じ機能を持つので、共通して使える「classUnit(ユニットクラス)」として定義します。まずは順伝播の機能を作ります。 各ユニットは次のような機能を持つよう…

【VBA編】入力層の作成

入力層の作成? まず手始めに入力層のコードを書いていきます。 が、、実は入力層はデータを受け取って隠れ層1層めに渡しているだけなので、なくても大丈夫です。 もし、入力層の作成が面倒だったり、計算資源を無駄にしたくない>< 場合などは、入力層の…

【VBA編】設計

前回まででデータの読み込み処理の作成が完了しました。 今回からは実際にニューラルネットワークを作るフェーズに移っていきます。 その前に、どのように実装するかを簡単に見ていきましょう。以前の記事もあわせて参考にしてください。 celaeno42.hatenabl…