pytorch_mlp

多層パーセプトロンで近似してみます

モジュール

 

 

 

 

#読み込んだパラメータがちゃんと型にあっているかどうか
model.load_state_dict(param_load)

 

pytorch_linear_regression

線形回帰です。

下準備

モジュール

 

線形にノイズを乗せたサンプルデータを作成する。

 

適当な一次関数を乗せる

あってないので学習していく

 

学習結果

以上

 

 

 

dezeroでニューラルネットワーク2 model, optimizer, MSEをフル活用

dezeroでニューラルネットワークを使った回帰をやってみる2

dezeroに搭載されている、model, optimizer, MSEをフル活用したバージョンです。

結果は前回と同様によく回帰できていますね。

損失の減り方がとても早いです。今回はAdamを使っているのでうまく昨日しているようです。悩んだらAdamは間違ってないようです。

スクリプトはこちらに貼っておきます。

 

dezeroでニューラルネットワークを使った回帰をやってみる

やってみよう。

まずは線形回帰

グラフはこんな感じで線形近似できている。

損失が徐々に減っていく。いい感じだ。

 

これをsinカーブでやってみると、直線しか表現できないのでぜんぜんだめ

 

そこでニューラルネットワークの出番。

活性化関数のお陰で表現が増える

sinカーブにノイズをのせたサンプルデータを作ってニューラルネットワークでやってみよう

損失の減り方をみると開始直後に急激に減って、なんと1万回くらいのところで再度損失が急激に減少した。理由は分からないが なんかすごい。

ではコードはこちら

次回予告

次はdezeroをフル活用でやってみよう

オプティマイザとかも予め用意されているらしい。

強化学習:多腕バンディット問題 定常・非定常

強化学習の基礎、多腕バンディット問題

面白そうなのでやってみました。

ちなみに、本日のアイキャッチは画像生成AIであるStableDiffusionで「multi arms bandit problem by stable diffusion」 というワードから生成した一枚です。

モジュールインポート クラス作成

バンディットとエージェントで学習 定常問題

結果

モデルを200回繰り返した平均結果

バンディットとエージェントで学習 非定常問題

 

結果

モデルを200回繰り返した平均結果

 

 

PySimpleGUIを使ってみる

基本的な最小構成のスクリプト

キーワード

  1. layout  = [[sg.Text()]]
  2. sg.Window()
  3. while True
  4. event, values
  5. window.read()
  6. event == None
  7. window.close()

表示を増やしてみる

キーワード

  1. sg.Input()
  2. sg.Multiline()
  3. size=( 20,1 )
  4. font=(‘Meiryo UI’, 18)

ボタンとポップアップ

キーワード

  1. sg.Button(key=’button’)
  2. sg.Button(image_filename =’ファイルパス’,key=’button’)
  3. result = sg.PopupYesNo()
  4. if result == ‘Yes’
  5. sg.Popup()

インプットを取得して処理、出力する

キーワード

  1. sg.Output()
  2. print()

注意:インプットは文字列になるので、計算するときはint,floatで数値に変換してからやること。

チェックボックスを付ける

キーワード

  1. [sg.Checkbox(‘入力1’,key=’checkbox1′,default=True), sg.Input(default_text=’3′,key=’input1′)]
  2. if values[‘checkbox1’] == True: summation += i1
 

ラジオボタンを使ってみる

キーワード

  1. [sg.Radio(‘足し算’,key=’radio_add’, group_id=’radio1′,default=True), sg.Radio(‘掛け算’, key=’radio_multiply’,group_id=’radio1′)],
  2. if values[‘radio_multiply’] == True: if values[‘checkbox1’] == True: multiple *= i1
 

参考

django#1 仮想環境 pepenvしてdjangoを準備する

最新のpythonをインストールします。3.10ですね。

https://www.python.org/downloads/release/python-3100/

Windows installer (64-bit)

開発用のフォルダを新規作成します。ここではproject_aとしましょう。

project_aに移動して、

$pip isntall pipenv

$pipenv shell

するとproject_aの中に仮想環境が出来上がっていてさPipfileというファイルが一つ出来上がっています。

$pip listすると最低限のものしかないので、モジュールを入れてみます。

pip ではなくてpipenvなので注意です。

$pipenv install django

開発のときだけ仕様するモジュールは –devを入れます

$pipenv install –dev flake8 autopep8

すると Pipfileファイルは下記のようになります。

djangoのプロジェクトを立ち上げましょう

https://docs.djangoproject.com/ja/3.2/intro/tutorial01/ には

$ django-admin startproject mysite

と書いてありますが、

$django-admin startproject config .

と、今後コンフィグに関するフォルダ、例えばsettings.pyの場所がわかりやすくなります。

今後、configのほかにusersとかフォルダが増えていきます。

ランサーバーして動くかどうか見てみましょう

$python manage.py runserver

なんか警告出ていますが無視。

chromeからhttp://127.0.0.1:8000/でdjangoの初期画面(ロケットが飛んでいるやつ)が表示されたらOKです。

終わるときはCTRL-BREAK と書いていますが。

ctrl+c でした。(windows10)

この記事は下記の動画を参考にさせていただきました。ありがとうございます。

 

condaで仮想環境をつくる

anacondaをインストールしておきます。

anaconda promptで

$conda create -n kaso-kankyo python=3.8

ここでyを押して続行。

仮想環境が出来上がっているか確認する

$conda env list

仮想環境をアクティベートする

$conda activate kaso-kankyo

$pip list でモジュールを調べてみると

で、最小構成だった。pip numpy pandas matplotlibが入っている。

抜けるときは

$conda deactivate

でOK

仮想環境を削除するときは

$conda remove -n kaso-kankyo –all

でOK.

試しに、flaskをインストールしてみると

$conda install flask

jinda2 が自動的にインストールされる。

ディープラーニングのライブラリを入れてみる

$conda install pytorch

ついでに行っておくと、インポートするときはimport torchになるので注意。pyはいらない。

色々ついでにはいってきたがtorchvisionは入っていない

$conda install torchvision では入らない

$conda isntall pytorch torchvision -c pytorch

とすると入る。なぜ?結構時間がかかるので慌てて強制終了しないこと。3分位だったかな。

だいぶいろんなものが入ってきた。

次は画像処理系行きましょう。

$conda install opencv

なんとopencvバージョンが4までいってました。

で、Jupyternotebookを使うとき、どうやってこの環境でやっていくのでしょうか。

Flaskを使ってみる

まずはwebアプリフレームワークであるFlaskをインストール

$pip install Flask

2.0.1 が入りました.

次にjinja2もインストールします。

HTMLにpythonを埋め込むテンプレートエンジンというものらしい。

$pip install jinja2

3.0.1 が入っていました。入れた記憶がないが、Flaskをインストールすると勝手にはいるのかな?

構成は

flaskr>templates>index.html, xxx.html

flaskr>__init__.py, main.py, yyy.py

の2系統ある感じする。templatesは決まりなのでフォルダ名を変えてはいけない。

フォルダ構成を作ったらindex.htmlを書いていきましょう。vs code を使っているなら ! を打つだけで、下のコードが自動的に生成されて便利です。langはenからjaに変えておきます。

ボディには下記のようなのを入れておきました。

次、__initi__.pyです。

意味わからないけど、下記のような呪文を書きます。

インポートするのはflaskモジュールではなくて自分で作ったflaskrです。

appはFlaskアプリケーションオブジェクト というらしいです。

つぎに、main.pyです。今作ったFlaskアプリケーションオブジェクトをインポートします。

トップページ(‘/’)にアクセスしたときに実行する関数を定義します。

トップページにアクセスしたときに、render_templateメソドを使って、index.htmlが表示するようにしましょう。

最後に__init__.pyの方にこのmain.pyを呼び出せるようにしておく。

さて実行しよう

Flaskアプリの起動方法
CMDの場合
flaskrが入っているフォルダへcd で移動する
set FLASK_APP=flaskr
set FLASK_ENV=development
ここまではできた
flask run でエラー
powershellの場合
flaskrが入っているフォルダへcd で移動する
env:FLASK_APP=”flaskr” ですでにエラー
どうしようもない。ダレカタスケテ
で、結局どうしたかというと、flask runができないので、直接python main.py して動かせるようにした。
そうすると、flaskrフォルダの上位へ移動する必要なくなる。
そもそも__init__.pyのimport flaskr.mainも意味わからんし、やめた。
もともと__init__.pyに入れていた app=Flask(__name__)もmain.pyに移動した。
で、最後にapp.run()を入れると、python main.py で実行できたから、ひとまずは良しとしよう。