Console今回、オリジナルのテキストデータ(CSV)を使って新規データ・セットを作成し、それを使って学習する新規プロジェクトを作ってみます。オリジナル画像データの場合はこちらです。arakan-pgm-ai.hatenablog.com2017/11/30追加>この記事の説明は、Version1.00当時の画面を使っています。>Version1.10でアイコンのデザイン等が少し変更になってます。>ですが、操作に影響するほどの変更ではないと判断して、そのままにしてます。学習・評価に使うCSVデータの作成とりあえず、EXCELで適当なデータを作って、CSVで保存します。元にするデータはこんな感じを使います。インプットにして、標準かデブかを出力にするものです。(ほぼ、意味はないですが・・笑)なお、意味ありげなヘダー項目名になってますが、このヘダー名は使いません。これは、単なる元データなので、このままでは使えません。ここから加工して、ニューラルネットワークコンソールで使えるフォーマットにしてやる必要があります。ューラルネットワークコンソールで使えるフォーマットにする方法は2通りあります。データセットCSVとデータCSVを分けて作る(方法1)わけないで1ファイルで作成する方法(方法2)です。方法2の方が簡単ですが、まずは、方法1から説明します。方法1:データセットCSVとデータCSVの2種類を作るまず、この元データから、データ・セット用CSVと、データCSVの2種類を作る方法です。データの値は「おおむね-1.0~1.0の間」になるよう加工するデータは数値である必要があります。どんな数値でも良いというわけではありません。値は「おおむね-1.0~1.0の間」になるように加工しておかないとだめみたいです。マニュアルではこうなっていますから。変数が画像以外のベクトルもしくは行列である場合、各セルにはデータCSVファイルのファイル名を入力します。データCSVファイルはデータセットCSVファイルとは別にデータ毎に用意するCSVファイルです。データCSVファイルはヘッダを持たず、数値セルのみで構成されます。(行数,列数)である配列として扱います。実数値はおおむね-1.0~1.0の間に収まるように事前に加工しておく必要があります。上記のデータは、まず、以下のように1000で割った数字に加工する必要があります。左側の1000で割った数字の部分だけを残して、上記の例でいくとD列より右はズバッと消してしまいます。それで、ABCの3列だけのデータにするわけです。(イメージです)1行1ファイルに分割してやる今度は、上記の1シートで複数行にわたってできているデータを「1行1ファイル」に分割してフォルダに保存してやる必要があります。これは手作業でやってもいいですが、かなり面倒です。この一連の作業は手作業でしても良いですが、少々面倒です。自分は、EXCELのVBAマクロを使ってやってます。この記事の最後の方にそのVBAソースをのせてます。データセット用CSVのフォーマットデータ・セット用CSVは、例えばこんな感じです。A列に、1行1ファイルで保存されたファイルのパスを指定しています。B列には、そのファイルの内容に対する正解ラベルを指定します。今回は、ノーマルが0、デブが1としてみました。ファイルのパスは相対フォルダにした方が良いです。このデータセットCSVを置いたフォルダにサブフォルダを置き、そのサブフォルダの下に分割したCSVをおくわけです。絶対パスでもうごきますが、フォルダ変更とかしたときに、かなり面倒くさいです。1行目はヘッダ行です。このヘッダの名前にはルールがあります。ヘダーのラベル名は規則に従うヘダーのフォーマットは、「変数名[__次元インデックス][:ラベル名]」なんですが、今回はテキストデータなので次元インデックスは不要です。変数名は、入力側が「x」、出力側が「y」を、固定で使うのが推奨です。ラベル名を適当につけて、「x:data」「y:label」としています。学習用と評価用の2セットにわけるこれをさらに、学習用と評価用の2種類のセットを作らないといけません。今回は、学習用で1500件、評価用で500件作りました。方法2:ひとつのCSVにデータと正解ラベルを書く方法ひとつのファイルでデータファイルとする方法です。データを1行1ファイルに分割する必要がないので、かなり手軽です。こちらでも、「-1.0から1.0の範囲」で数字を収める必要があるのは一緒です。みたいな式でfatを1にして、normalを0にするとか・・>そうして、こんな感じのデータにしておく必要があります。方法2の最大のポイントはヘダーの付け方です。方法1とは、規則がまったく異なるので注意してください。データの部分は「x」にして、それぞれに「__0」「__1」「__2」と連番をつけます。この「__」の部分は、アンダーバー「_」2つであることに注意してください。x_1のように、アンダーバー「_」ひとつにすると、学習時にエラーになります。「xが見つからない」みたいなエラーメッセージなので、原因がヘダー名の付け間違いだと気づくのに結構苦労します・・知らないと。学習用と評価用の2ファイルにわけるのは同じこれを学習用と評価用の2CSVファイルにわけて保存すれば、OKです。学習用と評価用は、同じデータがダブってはいらないようにしてください。ダブっていてもエラーにはなりませんが「学習して、特徴をつかんで、未知のデータを推論・評価する」という目的にはそぐわないものになりますので。こちらの方法では、ファイルはひとつなので、このファイルがデータセットCSVになります。半角英数字しかファイルにないので、文字コードはあまり気にする必要はありません。最近はUTF-8がデフォルトである場合が多いので、EXCELでCSVファイルを保存した時のSJISが嫌だという場合があります。自分は作ったデータセットをUTF-8に変換したり、方法1の場合だとUTF-8でファイルを自動作成するVBAマクロを使ったりしてます。このへんをここで書くと、ごちゃごちゃするので、最後にまとめてのせときます。オリジナルテキストデータをニューラルネットワークコンソールで使うニューラルネットワークコンソールを起動します。DATASETタブに追加DATASETタブを開き、OpenDatasetを押します。ファイル選択ダイアログが開きます。さきほど保存したデータ・セット用CSVファイルを選択して開きます。(方法1・方法2共)データ・セット一覧に取り込まれました。今は、learn01.csv・・つまり、学習用のCSVを取り込みました。続けて同じ要領で、学習用のCSVを取り込んでおきます。Project」を選択します。新規プロジェクト画面が開きます。プロジェクトのデータセットの差し替え初期データとして、MNISTのデータがセットされているので、右上のDATASETボタンを押して、データ・セットの入れ替えをします。デフォルトで、DATASETで「Training」と「Validation」が用意されています。この両方に、先程追加したCSVデータを紐付けます。Dataset」ボタン(下図の赤丸部分)を押して、一覧を表示して、さっき追加した学習用のファイル(今回の例だと「learn01.csv」)を選択します。上図左側の赤四角の部分で、ちゃんと指定したファイル名と件数が表示されていることを確認します。Normalization」のチェックを忘れずにはずします。同じようにして、「Validation」にもう一つの方に500件の方のデータ(今回の例では「forward01.csv」)を紐付けます。チェックするポイントは同じです。Consistency」を使います。自信があったら、別にしなくてもいいですけどね。Consistency」を選択します。すると、しばらく処理が動いて、簡単なレポートが表示されます。found.」(矛盾は見つかりませんでした。)と表示されればOKです。EDITタブでの作業EDITタブを開きます。ここに、ネットワークモデルを作っていきます。左側のレイヤーの中から、以下のレイヤーを順番通りに選択して追加(ドラッグ&ドロップかダブルクリック)します。inputAffineReLUBinalyCrossEntropy今回はデブか否かの2値なので、BinaryCrossEntropyを使ってます。3値以上になったら、そこはSoftmaxCrossEntropyにする必要があります。あとは、上から順番に「選択→Shiftを押しながら下のレイヤーをクリック」を繰り返して、接続していきます。上記までは方法1と方法2で共通なのですが、INPUTレイヤーのsizeプロパティの設定値の設定ルールだけは異なります。最後に、inputレイヤーを選択して、左下に表示されるプロパティで、sizeを「1,3]と入力します。これはデータ用CSVの「行数、列数」です。今回は、1ファイルが「1行3列」なので、1,3です。データセット用CSVをプレビューすると、そこに小さく、この数字がでているので、それを参考にするのが確実です。方法2の場合ははInputのサイズには「列数」のみを指定します。今回の場合、列は「x__1」「x__2」「x__3」「y」の4つがありますが、「y」はラベルなのでいりません。「x__1」「x__2」「x__3」の3を指定します。方法1の場合だと、データセットタブの数字をうつせばよかったのですが、方法2の場合だとDATASETタブでは以下のように「4」と表示されてます。あることを確認します。次に、Affineのレイヤーを選択して、outshapeを、inputにあわせて「1」にしておきます。デフォルトが100とかになってますから、必ず修正します。これで、プロジェクトの設定は終了です。上書き保存をしておきましょう。作成したプロジェクトで学習と評価データの設定とかミスをしてたら、ここでエラーで停止しますので、エラーメッセージを見てなおすしかないです。学習ボタンを押します。なんとか、エラーなく終わりました。次に評価をやってみます。Accuracy(正確さ)が94.98%でした。CSVデータで独自のデータ・セットを作って、新規にプロジェクトを作る手順は、こんな感じでいけるみたいです。最初に、方法1の場合専用のEXCELのVBAマクロを書いてます。BOM無しへの変換を行ってます。(BOM付きはエラーになって、ニューラルネットワークコンソールで使えません)方法1専用EXCEL-VBA1つの「forward01」という名前のシートに複数行あるデータを、1行1ファイルに分割してCSVファイルに保存する処理です。やってることは、A2セルからデータがある最下行まで、1行ずつ、3つのセルの値をカンマでつないで、1ファイルずつ出力しているだけです。今回のデータ「2行目からデータ行で、かつ、データが3列(A,B,C)にある」を前提に固定で書いているので、違うデータの場合は修正する必要があります。EXCELでただ書き出すと、BOM付きになってしまうので、途中でBOMコードを省く処理がはいっているのでごちゃごちゃしてますが・・。Subデータ・セット用ファイル名は、学習用を「learn01.csv」、評価用を「forward01.csv」にとりあえずしときました。方法1・方法2共通:テキストエディタでUTF-8にするWindows付属のメモ帳は絶対使わないでください。メモ帳でUTF-8で保存すると、強制的にBOM付きになります。すると、ニューラルネットワークコンソールでは使えないデータになります。保存したCSVファイルを、Sakuraエディタなどで開いて、文字コードをUTF8のBOM無しに変換して、上書き保存します。検索スポンサーリンク最近のアクセスTOP5ブクマ数TOP3IT的なTIPS・ノウハウイベントログから抽出したログオン・オフ時刻を見やすいように整形するEXCELのVBAマクロなど。Google検索は利用するけど、アクティビティを保存させたくない時もある文字コードで悩まされるなんて久しぶり/JIS7(ISO-2022-JP)とJIS8の話もっと見る作業時によく参照する「まとめ」djangoテンプレート内でforループで回す時の整理とデフォルト辞書利用時の注意など。djangoテンプレート内ので条件分岐(IF文)で注意することなどをまとめておくdjangoテンプレート/変数の値の参照の仕方が、Pythonと違う所があるので整理しておく。service」とサーバーレスコンピューティング関係をまとめてみる。PWA・SPA・・など「最近のWEBアプリケーションの種類」をざっくりまとめる。文系的まとめディープラーニング(ニューラルネットワーク)の「学習」の肝は「微分」らしいよ。Consoleもっと見るディープラーニングのデモをやってみるWord2Vecで「単語の足し算・引き算の結果(単語)を取得する」デモをやってみる。API」で入力文の疑わしい部分をAIが指摘するデモを作る。classで事前学習済のVGG16モデルを使った画像識別クラス/tensorflow2.0(tf.keras)ランダムフォレストで回帰してみる/気象情報と電力データその2もっと見るPythonでWebアプリやってみるviews.py(python)からデータを渡して、Chart.jsでRaderチャートを描く/Chart.js+djangoWEBブラウザ上にドラッグ&ドロップした画像ファイルをBase64に変換して表示するWEBブラウザで手描きしたイメージをJPEG・PNG変換後Base64エンコードするもっと見るPythonで自動化やってみるWebアプリケーションで自動的に値を参照、スクロール他Tips/Selenium&pythonWebアプリケーションで自動的に何かをクリックするTips/Selenium&pythonWebアプリケーションへの自動入力・選択のTipsあれこれ/Selenium&pythonもっと見るPythonで数学・グラフィックスやってみるモンティ・ホール問題で、ちょっと暇つぶし。最近、台風が怖すぎる!!!生産性向上しろと言いながら、片方で足をひっぱるなんて・・と呆れてます。/軽減税率のニュースを見てもっと見るBOKU62歳の文系SE”BOKU”です。<arakan_no_boku@yahoo.co.jp>興味の向いたものを、つまみ食い的に勉強してます。自分が消化した内容を、頭の整理と備忘を兼ねてブログに書いてます。IT系・・特に機械学習・プログラムネタが中心ですが、IT以外のネタになる時もあります。(43)スポンサーリンクはてなブログをはじめよう!arakan_no_bokuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。