Udemy受講:「 みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】」(3)
こんばんは!小村だよ!
Udemy「 みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】」の受講記録になります。
今日でこの講座は最後!残り少ないので記事も短め!
よろしくね!
Udemy受講講義
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】
講義資料:
GitHub - yukinaga/minnano_ai: YouTubeのライブ講義「【Live!人工知能 】みんなのAI講座」、およびUdemyコース「みんなのAI講座」で使用する教材です。
講義概要
講義時間:約8時間(倍速再生や講習にかかる時間で前後)
GoogleColaboratoryを使用するため、環境構築不要
機械学習の全体的な概要のみで、DeepLarningは扱わない
講義メモ
セクション7: さらに学ぶために
ライブラリ
scikit-learn(サーキットラン):簡単に
Tensorflow:テンソル計算用
Keras(ケラス):学習コストが低く高機能
PyTorch(パイトーチ):Kerasに似ている、近年トレンドとして伸びている
どれが流行りか
- Google トレンド
- これから学ぶならPyTorchがよさそう
- Google トレンド
機械学習で有用な数学
発展技術
CNN(畳み込みニューラルネットワーク)
- 畳み込み層:特徴を抽出する
- プーリング層:畳み込み層の特徴を圧縮する
- 画像を分析するのが得意なニューラルネットワーク
RNN(再帰型ニューラルネットワーク)
GAN(敵対的生成ネットワーク)
- 偽物の顔画像を作成したりする
強化学習:
CPU VS GPU
おわりに
今回は講座の終わりということで、次にどうステップアップするかの知識がメインでした
私がやりたいのは株価予測や競馬予測なので、強化学習に興味あります。
Udemyでは「AIパーフェクトマスター講座 - Google Colaboratoryで隅々まで学ぶ実用的な人工知能/機械学習」が続きによさそう
今回は短いですがこの辺で
ではでは、ちゃお~~~!
小村の開発環境構築(19) Django Rest FrameworkのHerokuの設定続き
こんばんは!小村だよ!
今回は前回デプロイしたherokuを見直していくよ!
よろしくね!
やること
- herokuへのmigrate実行
- createsuperuserして管理ページにログイン
- API動作確認
- herokuよりDBを確認
- herokuの静的ファイルの設定(保留)
前提条件
- Ubuntuにリモート接続していること(これまでの環境構築参照)
手順
herokuへのmigrate実行
前回デプロイだけしてデータベースを作成していなかった!
下記を実行してデータベースを作成します!
無事完了!
heroku run python manage.py migrate
createsuperuserして管理ページにログイン
- 下記を実行して管理者アカウントを作成します。
heroku run python manage.py createsuperuser
IDとパスワードを設定します
その後管理ページにログイン
- 無事入れました!
API動作確認
herokuよりDBを確認
今後の保守の方法もばっちり学んでいきましょう
herokuのpostgresの内容を確認します
メニューボタンよりDataClopsを選択
Create Dataclips
を選択適当にクエリ文を入力して
Save & Run
こりゃ簡単だ!すばらしき!
herokuの静的ファイルの設定(保留)
WhiteNoise
をインストールする必要があるみたいうーん……管理ページが崩れてるのきになるんだよなー
でもAPIでこのページを公開することないし、いいかなぁ
いったんそういうものがあるというメモだけしてやめておくぜ!!
おわりに
小村の開発環境構築(18) Django Rest FrameworkのHerokuへのデプロイ
こんばんは!小村だよ!
今回は前回作成した簡易APIをherokuにデプロイするよ!
よろしくね!
やること
- 環境変数を用意
- Herokuへのデプロイに必要なものを用意
- ローカル環境と本番環境で異なる動作をするsettings.pyを用意
- herokuへデプロイ
前提条件
- Ubuntuにリモート接続していること(これまでの環境構築参照)
手順
はじめに
私のDjangoRestFrameworkでは下記DB構成を予定してます
local(開発):sqlite3
heroku(本番):postgres
これを実現するために、最初に本番とローカルで動作を変える必要があります
一般的にこのような環境による変化は、環境変数で識別することが多いです
環境変数を用意
export APP_ENV="local"
その後
printenv APP_ENV
を実行し、local
が表示されることを確認venv
に入っているなら、venv
内で設定しないといけない(ちょいはまりした)
SECRET_KEYを環境変数化
ついでにsettings.pyのSECRET_KEYも環境変数を使用するように変更しました!
これでソースを公開しても後悔しないぜ!
SECRET_KEY = os.environ.get('SECRET_KEY') |
Herokuへのデプロイに必要なものを用意
ふむふむふむふむ!!!!
色々参考にした!
そして色々インストール時にエラー吐いた!
何が悪いんや!!!
DjangoアプリをHerokuへデプロイするのには下記が必要みたい
gunicorn
django-heroku
dj_database_url
pip install gunicorn pip install django-heroku pip install dj_database_url
どうやら
psycopg2
(postgressを使用するライブラリ)のインストールで失敗下記を実行してから再度実行でインストールできました!
- エラーのストレスと作業時間の都合でまとめきれてないのでいつかまたまとめる
sudo apt install libpq-dev pip install wheel
Herokuへのデプロイ成功したけどアプリケーションエラー
なんやかんやしてデプロイは完了した!!!!!!!!
今まとめる気おきないけど、後々のためにやったこと書くと
そんな感じで
git push heroku main
を実行!無事デプロイできたぜ!アプリケーションエラーおきてるけどな!!!
エラー原因調査
settings.pyの設定がもれてた
PROCFILEの中身とsettings.pyの中身を
api
に直した- フォルダパスを指定する必要があるっぽいね
別のエラー
Not Found!!!
ぐるぢいよぉぉぉぉ
検索します
末尾にadminつけろってさ!
つけた!うごいてる!!!
おわりに
静的ファイルに問題ありで崩れちゃってるけど、いったんこれでデプロイOKで
あまあま設定でいきます!疲れたんだもん!
ではでは、ちゃお!
Udemy受講:「 みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】」(2)
こんばんは!小村だよ!
前回に引き続き、Udemy受講記録になります。
よろしくね!
Udemy受講講義
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】
講義資料:
GitHub - yukinaga/minnano_ai: YouTubeのライブ講義「【Live!人工知能 】みんなのAI講座」、およびUdemyコース「みんなのAI講座」で使用する教材です。
講義概要
講義時間:約8時間(倍速再生や講習にかかる時間で前後)
GoogleColaboratoryを使用するため、環境構築不要
機械学習の全体的な概要のみで、DeepLarningは扱わない
講義メモ
セクション5: 機械学習
学習の仕組み
順伝播と逆伝播がある
順伝播は分類分けに使う
逆伝播は学習に使う
バックプロパゲーション(逆伝播)を使う
- 出力結果と正解の誤差から、各ニューロンのバイアスを補正する
パラメータの更新(出力層)
修正量のベース(δo = (出力 - 正解)* 活性化関数の微分形))
重みの修正量 = - 学習係数 * δo * 入力
バイアスの修正量 = - 学習係数 * δo
パラメータの更新(中間層)
修正量のベース(δm = δo * 出力にかける重み * 活性化関数の微分形)
重みの修正量 = - 学習係数 * δm * 入力
バイアスの修正量 = - 学習係数 * δm
質疑応答
セクション6: 機械学習ライブラリの活用
scikit-learnとは?
サポートベクトルマシンとは?
境界により分類分けを行う
特徴が2なら線だが、3以上は面になる(チョウヘイメン)
サポートベクトルマシンでの機械学習
下記を実施
花びらの分類
手書き数字の分類
株価の単純な上下の予想
実用レベルではなさそうだが、ある程度予想ができていていい感じであった
5章でこんなの私にはむりーとなった心を癒してくれたぜ!
質疑応答
機械学習の値に、実際の値ではなく変化率を使う理由は?
- 株価などは、時期によって平均の値段が変わるため、参考になりづらくなる
サポートベクトルマシンで、どの程度の割合で明日株価が上がる、などは出せる?
- 信頼値を出すならニューラルネットワークを使ったほうが無難
おわりに
「 みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】」のセクション5, 6を受講しました!
むずそーーーと思ったのが、Pythonのライブラリ使うことでできるかもーになってきました!
馬券の予測をだしたいのですが、その場合ニューラルネットワークをより学ばなきゃですね
今回はサポートベクトルマシンのみの学習だったので、次から学びたいです!
残すところこのUdemyの講座もあと1セクション!最後までやりたいと思います!
ではでは、ちゃお~~~!
Udemy受講:「 みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】」(1)
こんばんは!小村だよ!
所属している会社で今月頭よりUdemyを契約してくださりました!!!
活用するっきゃねぇ!!!!!
ということで、Udemy受講記録になります。
よろしくね!
Udemy受講講義
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】
講義資料:
GitHub - yukinaga/minnano_ai: YouTubeのライブ講義「【Live!人工知能 】みんなのAI講座」、およびUdemyコース「みんなのAI講座」で使用する教材です。
講義概要
講義時間:約8時間(倍速再生や講習にかかる時間で前後)
GoogleColaboratoryを使用するため、環境構築不要
機械学習の全体的な概要のみで、DeepLarningは扱わない
講義メモ
セクション1: 人工知能の概要と開発環境
セクション2: Pythonの基礎
そこそこ飛ばしました
唯一、
__call__
についてだけ初見でした。便利そう。使っていきたい
セクション3: 必要な数学の学習
ネイピア数
機械学習でよくつかうということだけど今はピンとこない
e = 2.7182...
微積分した時のグラフが同じ図になるらしい?
ネイピア数の求め方は、以下の式でnを無限に大きくすることで求まる
(1 + (1 / n) ** n)
シグモイド関数
$$y = \frac{1}{1+e^{-x}}$$
y = 1 / 1 - e^-x
- ある値を1~-1の間の値にする性質がある
セクション4: ニューラルネットワーク
人の神経細胞を模したネットワーク
(人口)ニューラルネットワークの構成要素
- ニューロン
- 入力層
- 中間層
- 出力層
1つのニューロンには入力が複数あり、重みを与え、バイアスを加え、活性化関数を通し出力する
- いみわからん!
ニューラルネットワークは、値に応じて分類分けするための仕組み???
出力層の活性化関数によって得られる結果が変わる
- シグモイト関数を使うときは2つの分類にわけたいとき
なんとなくわかったようで理解度20%くらいと思う。
おわりに
きょうはここまで!
めっちゃつかれたーーー!!!
知らない式を理解しようとするとめちゃくちゃ脳疲弊する!!!!
ニューラルネットワークが全然理解できた気がしない!!!
なので次回ニューラルネットワークから復習していきます!
ではでは、ちゃお~~~!
小村の開発環境構築(17) Django Rest Frameworkの初期プロジェクト作成
こんばんは!小村だよ!
今日はDRFを爆速作成する予定だよ!
よろしくね!
やること
前提条件
- Ubuntuにリモート接続していること(これまでの環境構築参照)
参考サイト
本記事は下記サイトを参考に進めていくよ!
手順
pipライブラリ確認
早速参考サイトの通りスタートアップを作成していくよ
まずは必要なものがpipされていることを確認
autopep8 1.5.7 Django 3.2.5 django-filter 2.4.0 djangorestframework 3.12.4 flake8 3.9.2
この5つが入っていることが確認できたね
これらは今後も必須なので、
requirements.txt
を作ってメモしておくよ!
Django
のスタートアップ実行
django-admin startproject api
を実行作られるフォルダが、
api\api\~
と深いので、api
を1つ減らしておきますそしたら次に
python manage.py startapp src
を実行
api
フォルダとsrc
フォルダが同じ階層に作られますが、api\src\~
に変えますこの状態でひとまず動くか確認しましょう
python manage.py runserver
を実行。問題なし!
.gitignore
の作成
変更履歴が
venv
のせいで確認できないので、venv
を対象外にします.gitignore
を作成してvenv
を記述変更履歴がすっきりしたのでそのままコミットしておきましょう
DRF
の爆速API作成
ではでは、参考サイトをコピペしまくりでやっていきます
- 何回も会社でやったのでコピペですが、初回はちゃんと書いたほうがいいです
変更したところのメモ
- フォルダ構成を変えているので
settings.py
とapps.py
の初期値を変更する
- pycacheがうざいので下記環境変数を追加して発生しないようにする
export PYTHONDONTWRITEBYTECODE=1
urls
は1つにまとめる
# coding: utf-8 from rest_framework import routers from api.src.views import UserViewSet, EntryViewSet from django.conf.urls import url, include from django.contrib import admin router = routers.SimpleRouter() router.register(r'users', UserViewSet) router.register(r'entries', EntryViewSet) urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^api/', include(router.urls)), ]
簡易API完成
http://127.0.0.1:8000/api/entries/
にアクセスするとjson形式で返します参考サイトではこの後もいろいろやってますが、今回は割愛
ひとまず最低限のAPIが作れるようになりました!
おわりに
仕事場でPython覚えるときに一番最初に実施した手順でした
このサイトを元に何回も人に教えてるので、特に問題なく完了ですね
後は初期設定の修正と、DB変更とherokuデプロイ!
そしたらweb開発の続きができる予定!
がんばるぞー!
ではでは、ちゃお~~~!
小村の開発環境構築(16) Pythonのリンターフォーマッター設定
こんばんは!小村だよ!
今日は前回やったpython系のインストールの続きをやっていくよ!
よろしくね!
やること
python
の拡張機能をインストールautopep8
flake8
のインストールautopep8
flake8
の設定(失敗)autopep8
flake8
の再設定
前提条件
- Ubuntuにリモート接続していること(これまでの環境構築参照)
手順
python
の拡張機能をインストール
autopep8
flake8
のインストール
次はフォーマッタとリンター!
開発するうえでフォーマッターとリンターは最初に着手したいよねー
というわけで
autopep8
flake8
をインストールするよ!
pip install autopep8 pip install flake8
autopep8
flake8
の設定(失敗)
上記参考サイトの通り、下記を順番にやっていくよ!
- 追記:うまくいかなかったので次の再設定殻が本題になるよ。ここは飛ばしていいよ!
- pylintの無効化
- pythonのlintingの有効化
- flake8の有効化
- ファイル保存時のlinting
- フォーマットのstyleをautopep8に設定
- 保存時の自動生計を有効化
- 1行文字数制限を外す
- 最終的に追加されたのは下図でした。半分くらいはデフォルトで設定されてたね
おけ完璧!flake8とautopep8の動作確認していきたいと思います!
autopep8公式の整形用サンプルソースを整形してみます
import math, sys; def example1(): ####This is a long comment. This should be wrapped to fit within 72 characters. some_tuple=( 1,2, 3,'a' ); some_variable={'long':'Long code lines should be wrapped within 79 characters.', 'other':[math.pi, 100,200,300,9876543210,'This is a long string that goes on'], 'more':{'inner':'This whole logical line should be wrapped.',some_tuple:[1, 20,300,40000,500000000,60000000000000000]}} return (some_tuple, some_variable) def example2(): return {'has_key() is deprecated':True}.has_key({'f':2}.has_key('')); class Example3( object ): def __init__ ( self, bar ): #Comments should have a space after the hash. if bar : bar+=1; bar=bar* bar ; return bar else: some_string = """ Indentation in multiline strings should not be touched. Only actual code should be reindented. """ return (sys.path, some_string)
いや、autopep8後にflake8のlintが反応するんだが????
えっ、それを解消してくれる参考サイトではなかったの……?
文字数制限はまぁいいとして、改行数が許せぬ……c
autopep8とflake8の再設定
文句言ってても仕方ないので修正しまーす!
色々回って最終的に下記設定に落ち着きました
設定先もリモートタブじゃなくてワークスペースタブに変更
上の設定まじで意味ないな……不要と追記しておこう。
{ "[python]": { "editor.tabSize": 4, "editor.formatOnSave": true, "editor.formatOnPaste": false, "editor.formatOnType": false, }, "python.linting.enabled": true, "python.linting.lintOnSave": true, "python.linting.pylintEnabled": false, "python.linting.flake8Enabled": true, "python.linting.flake8Args": [ "--max-line-length=120", ], "python.formatting.provider": "autopep8", "python.formatting.autopep8Args": [ "--aggressive", "--aggressive", ], "files.autoSave": "afterDelay", "files.autoSaveDelay": 10000, }
倍近くの行に成形されるね!
上の設定と大きく変わってるのは、
--aggressive
2つ付けてるところかな整形後のコードを見ると、下記とかひどいので、こういうのは都度調整だね
some_string = """ Indentation in multiline strings should not be touched. Only actual code should be reindented. """
おわりに
今日はこの辺でおわりますー!
すんなり言ってたらアプリ作成までやりたかったんだけどねー次に回す!
ではでは、ちゃお~~~!