アラカン"BOKU"のITな日常

あれこれ興味をもって考えたことを書いてます

プログラミング

Tensorflow入門の入門9:学習済モデルをTensorflow for JAVAで再利用して推論してみる

学習済モデルを、Tensorflow for javaで再利用する方法です。

Tensorflow入門の入門8:学習済モデルをTensorflow for JAVAで利用できるように保存(freeze_graph)しなおす。

TensorFlowの学習済モデルをJAVAで使えるようにするためにマージする方法

Tensorflow入門の入門7:pythonで学習済モデルをJAVAでの再利用を考慮して保存する。:(文系向け)

puthonで作った学習済データをJAVAで再利用するための保存の仕方。その1です。

tensorflow入門の入門6:学習結果を保存して、再利用する:(文系向け)

学習済のパラメータを保存して再利用するところをやります。

Tensorflow入門の入門5:少しだけ深いニューラルネットワークへ:(文系向け)

1層のみの浅いネットワークに、隠れ層をつけくわえて、ちょっとだけ深いニューラルネットワークにしていきます。

Tensorflow入門の入門4:データをCSVファイルから読んで学習する:(文系向け)

CSVファイルからデータを読み込んで、浅いニューラルネットワークで学習しますよ。

Tensorflow入門の入門3:1層のみのニューラルネットワーク、手作りデータで学習:(文系向け)

基本的な概念・用語と、Tensor(テンソル)の使い方が確認できたので、その動きを簡単なニューラルネットワークを実装して、確認していこうかと思います。 参考にするのは、本家のチュートリアル「MNIST For ML Beginners | TensorFlow」です。 ただ、これを…

Tensorflow入門の入門2:定数・変数・プレースホルダの整理:(文系向け)

tensorflowでデータの保持に使う定数・変数・プレースホルダについて整理します。よくある簡単なスカラ型だけでなく、配列や行列などについてもあわせてやります。

tensorflow入門の入門1:グラフ・テンソル・オペレーション・セッションを整理:(文系向け)

tensorflowでちょっと躓いたので、もう一回基本から整理し直そうという試みの第一回です。まずは基本的な用語の理解からはじめます。

Ajax:Jsonで受け取り画面遷移なしに更新する STS 3.8.3(Spring Boot 1.5.1)+thymeleaf

今回も、StringBoot+thymeleafで、Ajaxを使うパターンです。 前回は、thymeleafの「th:fragment」機能を使って、プルダウンリストを更新するケースをやりました。その時は、jQueryの$Ajaxの戻り値として整形済のHTMLを受け取りましたが、今回は、普通にデー…

Ajax:プルダウンリストの内容を画面遷移なしに更新する STS 3.8.3(Spring Boot 1.5.1)+thymeleaf

今回は、SpringBoot+thymeleafでAjaxを使って、画面遷移せずに、画面の一部を更新する「非同期処理」をやります。jQueryの$Ajaxの仕組みを使うと、比較的容易に処理は書けますが、SpringBoot+thymeleafの機能を使っているHTMLの一部を書き換えるのは、JSP…

reCAPTCHA V2をでロボットによる投稿を防ぐ STS 3.8.3(Spring Boot 1.5.1)+thymeleaf

今回は、Googleの「reCAPTCHA」を使います。Captchaは、WEBサイトのコメントシステムや問い合わせフォームに対して、ロボットを利用したスパム投稿を防ぐ手段です。従来は難読文字・数字を表示した画像を読み取って人間が入力する方法でしたが、それをより洗…

SpringBootだとログの書き出しも楽ちんです。 STS 3.8.3(Spring Boot 1.5.1)+thymeleaf

SpringBootでのログ出力の基本的なところをやります。 あれこれ、カスタマイズするのではなく、とりあえずログをファイルに書き出せるようにするところまでを範囲にします。SpringBootでは、spring-boot-starter-webを有効にすると、自動的にログも有効にな…

入力チェック:複数項目の相関チェックアノテーションの作り方 STS 3.8.3(Spring Boot 1.5.1)+thymeleaf

複数項目の相関チェック処理を共通処理化して、アノテーションで使えるようにする方法を試してみます。 複数項目の相関チェックとは、例えば、履歴管理するデータの開始日・終了日が、「開始日より終了日が過去ではない」などの相互の整合性を確認するような…

画面遷移:リダイレクトとフォワードでパラメータを受け渡す STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

前回、Spring Boot + thymeleaf でGET時のパラメータを受け取る方法の確認をしました。 arakan-pgm-ai.hatenablog.com そうすると、通常(例えば、return "hello" で、hello.htmlを呼び出すような)以外の画面遷移=リダイレクトとフォワード時に、どうやっ…

画面遷移:GET時のリクエストパラメータを受け取る STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot+thymeleaf で、リクエストパラメータの受取方法と画面遷移のやり方を確認してみます。 hello.html を想定して、/localhost:8080/hello?msg=TEST のパラメータ付URLを渡してみます。 パラメータの受取はコントローラクラスで定義します。 @Contro…

クラスパス内の静的ファイルにアクセスする STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

CSVデータとかを置いといて、初期データとして読み込むとか、独自の設定ファイルを用意するとか、たまに、静的ファイルを使いたいときがあります。 当然、テストの時と本番運用時でファイルのパスを書き換えたりはしたくないので、やっぱり、絶対パス指定と…

入力画面:画像をSUBMITボタン代わりに使う STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

先にお断りしておきます。今回はほぼ jQueryの話です。 タイトルに「STS 3.8.3(Spring Boot 1.5.1)+thymeleaf」とつけていますが、ちょこっとしかでてきません。先にお断りしておきます。 さて、本題です。 WEBアプリケーションは、原則、「フォームに何…

入力チェック用アノテーション定義を自分で作る。(独自実装版)STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

引き続き、入力チェック用のアノテーション定義を作ってみます。 前回は、標準アノテーションの再利用・集約をするだけで、チェックロジックの実装を行わないパターンでした。 arakan-pgm-ai.hatenablog.com 今回は、独自にチェックロジックも実装するやり方…

入力チェック:アノテーション定義を自分で作る。(再利用版)STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot +thymeleafの入力チェックで、@Patternを使えば、大抵のことができます。 arakan-pgm-ai.hatenablog.com その通りなのですが、前にも書いたとおり、このやり方にはちょっと欠点があります。 超わかりづらいことです。こんな感じの記述が、1箇…

入力チェック:@Patternと正規表現で独自チェックする。STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

入力チェックに使える標準アノテーションがあります。こちらの記事でその一覧表とかも掲載しました。 arakan-pgm-ai.hatenablog.com 種類は色々あるのですが、個人的にサンプルプログラム以外で使っているのを調べてみたら、@NotNull、@Size、@Patternくらい…

入力チェック:未入力時に空文字が渡される仕様を回避する。STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

String Boot + thymeleaf ・・というかSpring MVCでは、テキストボックスを未入力な状態で、Submitした時に、空文字(””)をセットする仕様になっています。 なので、@NotNullアノテーションをつけても、未入力の時にエラーになってくれないんですという話を…

セッションを使って画面間で情報を受け渡す STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

StringBootで、Webアプリケーションには必須のセッション管理をやってみます。 HTTPは、ご存知の通りステートレス(クライアントとのセッション情報を保存しない)なので、複数の画面間で共有しなければならない情報は自前で管理しないといけません。 セッシ…

入力画面、ラジオボタンとラジオボタングループを使う STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot 1.5.1)+thymeleafで、ラジオボタンを配置した画面の処理をやります。 ラジオボタンは複数の選択肢のうち、ひとつだけを選ばせるのですが、普通に一箇所に固めた選択肢で選ばせる場合と、ページの中にとびとびに離れた場所に配置して、それでも…

入力画面、チェックボックスを使う。 STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot 1.5.1)+thymeleafで、チェックボックスを配置した画面の処理をやります。チェックボックスを一つだけつける場合と、いくつか並べて複数選択を可能にする場合の両方をやってみます。 なお、今回も、前回までの画面にこの2つを追加する形でやる…

HTMLのタグの閉じ忘れで例外が発生する! STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

入力画面で使う各パーツの使い方の確認をしていて、動作確認のためにHTMLを書く前に認識しておいた方が良いことがあるのに気づいたので、先にそれを書きます。 HTML5で静的HTMLを書いて、それにthymeleafのタグを適用して画面に流用するケースです。 thymele…

入力画面、プルダウンリストとマルチセレクトボックスを使う。STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot 1.5.1)+thymeleafで、単一選択のSELECTボックス(プルダウンリスト)と、複数選択可能なマルチSELECTボックスを配置した画面の処理をやります。 前回までの画面にこの2つを追加する形でやるので、コントローラクラスとかは同じものを使い、変…

入力画面、今度はテキストエリアで複数行入力する。 STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot+thymeleafで、テキストボックスでの1行入力をやったので、今回はtextareaを使った複数行のテキストの入力をやります。 同じテキストなのですが、複数行=改行コードがはいるというだけで、単純にやるとうまくいきません。 今回は、その違う部分…

入力画面、テキストボックスの入力と基本的なチェックを使う。 STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

SpringBoot+thymeleafで、テキストボックスの入力とバリデーションをやります。 簡単なIDとパスワードとコメントを入力する画面にします。 最初にリクエストとレスポンスで受け渡しをする項目をFormクラスに定義します。以下のようなFormクラスを定義します…

日本語しか使わなくても、i18N対応はする意味がある。STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

日本語しか使う予定はない!と言い切れる場合でも、多言語対応できるようにはしときましょう。 その場合、正確には多言語対応ではなく、メッセージの外出し(=プロパティファイルで管理)です。 メッセージを外出しするだけで、十分メリットがあります。 メ…

参照画面:条件に一致した時のみHTML要素を出力する。 STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot + thymeleafで、前回一覧表出力をやったのですが、今回は、条件に一致した時のみHTML要素を出力するのをやってみます。 受け渡されたPersonオブジェクトの出力データの値(Value)を得点ととらえて、得点によって5段階評価(A,B,C,D,E)のイラス…

参照画面:テーブルを使い、行毎に色分けした一覧表を表示する。 STS 3.8.3(Spring Boot 1.5.1)+thymeleaf 

Spring Boot + thymeleafで、基本的なデータ出力画面を構成する方法をもう少し覚えていこうと思います。 前回で単純なStringデータを表示するのはやったので、今回はオブジェクトをListで渡して一覧表を表示するのをやってみます。 で、せっかくなので、一覧…

TensorFlowの使い方をざっくりと理解する。今度は、Numpyと併用してみる。

TensorFlowが「データフローグラフを使用した数値計算用のオープンソースソフトウェアライブラリ」であるという部分をもう少し見てみます。 本家のサイトにAPIのリファレンスのページがあります。 https://www.tensorflow.org/api_docs/python/ ここで、モジ…

TensorFlowの使い方をざっくりと理解する。まずは足し算と掛け算から。

とりあえず、TensorFlowの基本を理解しないと始まらない・・のですが、日本語の本とかはまだ少ないみたいです。 こちらが本家のサイトです。 www.tensorflow.org ちょっと翻訳して引用してみます。 TensorFlowとは、データフローグラフを使用した数値計算用…

おもちゃディープラーニングのPythonソースコードをGitHubにアップしました。

一旦ケリをつけたので、勉強の為に作った「おもちゃディープラーニング」をGitHubリポジトリに公開しました。 github.com 以降に、補足説明をしますが、今回の記事は、内容的に、pythonおよびGitHub、ディープラーニング等についての知識がある程度ある方で…

tensorflowを使うことにしたので、インストールしました。

ディープラーニングの自作は一旦ケリをつけて、フレームワークを使うことにします。 フレームワークは、グーグルのtensorflowにしました。 ディープラーニングのフレームワークも色々ありますが、今のところtensorflowが、一番デファクトスタンダードに近づ…

今更ですが、ハノイの塔をやってみました。

ハノイの塔というパズルがあります。 なんか誰でも知ってるレベルの有名なパズルみたいです。が・・・、恥ずかしながら知りませんでした。 下の図のように、3本の柱があって、一番左端(A)に何枚か(例では3枚)の円盤がささっているところからスタートしま…

データアクセス:ネイティブなSQL文を実行する STS 3.8.3(Spring Boot1.5.1) + EntityManager

JpaRepositoryを使ったデータアクセスは非常に楽です。 でも、どんなシステムを作るにせよ、どこかで複雑なSQLが必要になることが全く無いとも思えません。その時に困らないように、やり方を確認しておこうと思います。 方法は色々あります。が、あれもこれ…

MNIST(手書き数字)データを変形させて、バリエーションを作ってみた

MNISTの手書き数字画像データを、ずらしたり回転させて、バリエーション画像を作ってみました。 ディープラーニング実装の正解率をあげるアプローチで必要になって作ったのですが、pythonで数字を入れ替えるだけで、画像が加工できるというのは、ちょっとお…

データアクセス:Jprepositoryを使って簡単にCRUDする。 STS 3.8.3(Spring Boot 1.5.1) + JPA + MySQL

Spring Boot + JPA + MySQLで簡単なデータアクセスのサンプルを作ってみます。 プライマリキーが一つの単純なテーブルばかりではないので、後のことも考えて、簡単と言いながら、ちょっとだけ実用を意識します。 今回の目標は、以下にします。 複数キーを持…

SpringBootプロジェクトでJUNIT4を使った単体テストをする。 STS 3.8.3(Spring Boot 1.5.1)

String Bootに慣れるため、簡単なクラスを作って、JUNITで単体テストまでやってみます。 ソースがごちゃごちゃするので、パッケージに階層をつけてファイルを分類できるようにします。 調べた限り、Spring Bootでは、特にパッケージ構成の縛りはない様なので…

STS 3.8.3(Spring Boot 1.5.1)+thymeleafでとりあえず動くサンプルを作る。

Spring Bootで簡単なサンプルを作ってみます。”Hello world"ですね。 ただ、文字を表示するだけじゃ面白くないし、参考にならないので、最低限として以下を確認事項とします。 なお、Viewの部分はJSPではなく、tymeleafを使います。そっちが「推奨」らしいの…

STS 3.8.3(Spring Boot 1.5.1)のインストールと日本語化

Spring Bootフレームワークを使ってみます。 理由は、開発生産性が高いJAVAフレームワークだからです。開発終了したSAStruts(Seaser2)にイメージが近い気がして、とっつきやすさを感じたということもあります。 試してみないと細かいことはわからないのです…