Photo by Unseen Studio on Unsplash |
記憶力を低下させる原因
- 無関心
- 意欲の低下
- 理解不足
- 復習不足
- アウトプット不足
記憶力を高める方法
- 関心をもつ
- 意味を理解する
- 覚えたいことを精選する(すべてを覚えることはできない)
- 覚えたいことを繰り返し使う(アウトプットの機会を増やす)
- 既存の知識と結びつける
- 頭の疲労を防止する
- 頭の疲労を癒す
- 十分な睡眠をとる
- 適度な運動する
Photo by Unseen Studio on Unsplash |
Photo by Unseen Studio on Unsplash |
ChatGPT でできることは ChatGPT からの回答を引用した。
専門的なことはネットで検索するよりも的確な回答が得られる。
Photo by Andrea De Santis on Unsplash |
Windows 上の操作で自動化したいことがあり、いろいろなシェアウェアを試してみたが、どれもいまひとつであった。
ネットで調べてみたところ RPA のようなことが Python でもできるようなので自作することにした。
au カブコム証券 FX のシステムトレードを使っている。
通信が瞬断すると自動売買が停止し、リトライを手動でしなければならない。(Fig.1
参照)
頻繁に起きるので自動売買の意味がない。
通信設定の調整もやり尽くしたが、インターネット側の問題であれば手詰まりである。
同証券会社にリトライを自動化してくれと要求したとしても、すぐには対応してくれないだろう。
取り急ぎ Python で自動でリトライボタンをクリックするプログラムを作成することにした。
Fig.1 通信エラー |
このプログラムで実現したいのは、システムトレードに通信エラーが表示されたらリトライボタンをクリックするということ。
通信エラーの表示が検知できればよいのだが、それを実現しようとすると途端にハードルが高くなる。
幸いリトライボタンの座標にはそれ以外のイベントを起こすものがない。
そこで無条件にリトライボタンを定期的にクリックするという仕様にした。
ちょいプロだが、繰り返し回数と実行間隔は可変にしておいた。
[ソースコード:46行目~53行目]
このプログラムはコマンド起動するが、その際繰り返し回数と実行間隔を指定することにより状況に応じた運用ができる。
また、プログラムを走らせたまま外出することもある。
ログを出力し、プログラムの稼働確認ができるようにしておく。
[ソースコード:32行目~42行目]
ログは Google Drive
に出力するにすればスマホでも確認できる。
プログラムが停止していたら、リモートアクセスで再起動などの対応を取る。
リモートアクセスは Chrome リモート デスクトップ を使用している。
win32gui は pywin32 をインストールすること。
pip install pywin32
まず、画面全体の大きさはディスプレイの解像度で確認する。
設定 > システム > ディスプレイ > ディスプレイの解像度
次に該当位置にマウスのカーソルを置き、コンソールで下記のコマンドを実行する。
解像度は1920 × 1080 であり、横は真ん中あたり、縦は真ん中より少し下なので、だいたいこんなものだろう。
コードに書くときは切りよく x=1000、y=700 にしておいた。
プログラムは実行可能ファイル(exe ファイル)にビルドしておく。(参考:Python ファイルをビルドしてEXE ファイルを作る方法)
コンソールに直接コマンドを打ち込んでもよいがバッチファイルにしておけばコンソールを開かなくても実行できる。
次のバッチファイルの例では、60秒間隔で 1440回(24時間)繰り返す設定になっている。
auto_retry.exe 1440 60
手動でリトライする必要がなくなったので夜中も安心して眠れるようになった。
ただ、PC
で作業している場合は一瞬ではあるものの、作業が定期的に止まってしまうところが難点。
ネットサーフィンなどのお楽しみ中なら我慢できる範囲。
専用のマシンを導入すべきだろうか?
Photo by Alejandro Escamilla on Unsplash |
私は英語が好きだ。
でも、聴くのも話すのも苦手である。
これまでさまざまな勉強法を試してきたが効果的な方法はなかった。
いま効果があると感じているのは英語のフレーズを暗唱する方法だ。
日常生活で使う日本語のフレーズを英語のフレーズで言い換えることにより次のような効果が得られる。
この練習を毎日5分から15分くらい行う。
これを始めてから 2022年8月25日時点で 221日経過しており、実施したのは198日であるから、結構続いている。
現時点では最も自分に適した勉強法だと思っている。
この英語勉強法を支えてくれているのが AnkiWeb である。
About - AnkiWebAnkiWeb とは Web で使える暗記カード(フラッシュカード)である。
AnkiWeb は次のような特徴がある。
AnkiWeb を使うようになってからは、本を読んで覚えようとしていたときより、覚えやすく記憶に残りやすくなったと思う。
カードの登録は自分でやっている。
たとえば「もっとやさしい起きてから寝るまで英語表現600 起きてから寝るまでシリーズ」という本があるので、日本語と英語のフレーズを毎日少しずつ登録する。
[音声DL付]改訂版 もっとやさしい起きてから寝るまで英語表現600 起きてから寝るまでシリーズこの本に限らず英語のテキストであれば何でもよい。
「English Journal」などの Web サイトを使えばコストはかからない。
多いと疲れるし長続きしないので、必ず嫌にならない程度の数に抑えておく。
この作業は作業記憶(ワーキングメモリ)を使うので、すでに勉強を初めていると言っても差し支えない。
登録が済めばテストを開始する。
表示された日本語のフレーズを英語で諳んじる。
その結果により「もう一度」「難しい」「正解」「簡単」のいずれかをクリックする。
私の場合は次のような基準でクリックしている。
テストの例 |
使い方は自由。
それぞれご自身の勉強スタイルで使えばよいだろう。
久しぶりに キカガク を訪問したら、リニューアルしていたので、復習を兼ねて受講することにした。
記事内の数式は正しい表記になっておらず、またほとんどの数式を省略している。
まとめにも書いているが、非常に理解しやすく解説されているので、実際に受講されることをおすすめする。
基本的な操作の方法を動画で説明。
当コースの流れについて説明。
人工知能、機械学習、ディープラーニングの概念について紹介。
これらは、人工知能 ⊃ 機械学習 ⊃ ディープラーニング の関係になる。
機械学習に必要となる数学の分野は次の3つ。
機械学習には次の3つの種類がある。
機械学習が保証するのは内挿の予測まで。
外挿は機械学習の保証外となるが、時系列のデータに関しては外挿であっても構わない。
機械学習における微分の利用目的はモデルとなる関数の誤差を最小にすること。
機械学習における微分の使い方(2点から直線を求める)。
機械学習における微分の使い方(1点から直線を求める)。
次の3つの公式は頻繁に使うので覚えておく。
以下は演算例。
機械学習では複数の変数を取り扱うので、偏微分の演算方法を覚えておく。
偏微分とは多変数の微分すること。
∂/∂a():a 以外を定数だと仮定して微分する。
定数は微分から外だし可能。
計算例
∂/∂a(c-2ca+ca**2) = c * (1)' - 2
* c * (a)' + c * (a**2)' = -2c + 2ca
スカラー・ベクトル・行列はそれぞれサイズが異る。
テンソルは複数の行列を並べたもの。
行列の基本的な演算方法。
演算結果のサイズには法則性がある。
スカラー・行列の行と列を置き換えることを転置という。
転置には次のような法則がある。
単位行列と逆行列の関係性
機械学習では評価関数を最適化するためにベクトルを偏微分するため、演算方法を覚えておく。
ベクトルの微分は各要素を偏微分すればよい。
問題設定では、出力変数と入力変数を決める。
ただし、単回帰分析の場合、入力変数は1つに限定する。
入力変数を複数扱う場合は重回帰分析を行う。
分析は学習と推論のフェーズがある
モデルを決めるために、入力変数と出力変数の関係を直線で表し、傾きと切片を求める。
この傾きと切片をパラメータという。
データ(入力変数と出力変数)にもとづいて適切にパラメータを決定する。
パラメータを決定するためにデータの中心化(Centering)を行う。
データの中心化を行うと切片がゼロになり、演算が楽になる。
データの中心化は各データから入力変数と出力変数の平均値を引けばよい。
パラメータを適切に決定することを評価関数を決めるという。
評価関数は損失関数ともいう。
実際の値と予測値の差を誤差という。
評価関数は二乗誤差(誤差を二乗したもの)の合計値を求める。
誤差を最小化するために、評価関数の傾きがゼロになるように調整する。
すなわち、傾きがゼロになるように評価関数を偏微分する。
演算は次の2つのステップに分ける。
単回帰分析と同様、入力変数と出力変数の関係を直線で表し、傾きと切片(パラメータ)を求める。
ただし入力変数は複数になり、傾きも複数になる。
傾きは「重み」といい、入力変数毎に異なる。
切片は「バイアス」という。
入力変数を定数 1 にすれば、他の入力変数と同じように扱うことができる。
モデルはベクトル式で表現できる。
単回帰分析と同様、パラメータを適切に決める。
評価関数は実測値から予測値を引いた数の二乗誤差の合計値を求める。
評価関数はベクトル式で表現できる。
単回帰分析と同様、演算は2つのステップで行う。
Google Colaboratory を使うため、PC に Python やライブラリをインストールするなどの環境構築作業は要らない。
よく使用する制御文。
関数には3つの種類がある。
クラスには3種類の関数を定義することができる。
Pandas はデータの操作( CSV ファイルの読み込み、SQL 等によるデータベースとの連携等)で使用する。
Matplotlib はグラフ等を描画するために使用する。
Numpy を使って単回帰分析を行う。
行列演算に必要な知識
重みを算出
NumPy でよく使用する処理
演習
実装の際は上記のような計算は行わない。scikit-learn 等のライブラリを使用して、ミスを減らし、効率的にモデルを構築する。
重回帰分析は、sklearn.linear_model.LinearRegression を使用する。
キカガク代表取締役会長の吉崎さんが講師をご担当。
黒と赤のマジックペンと A4 の白紙を使って手書きで非常にわかりやすく説明されていた。
まるで家庭教師に教えていただいているようだった。
こちらもノートを用意し、同じように手書きで式を書いたり、重要事項をメモしたりした。
内容的には、機械学習に必要となる数学の基礎知識が精選され、かつ順序よく説明されていたので、とても理解しやすかった。
機械学習を独学で習得しようとして、線形代数や微分等で躓いた人は是非このコースを受講されることをおすすめしたい。
資格は結構取っている。
取得した資格は、IPA 独立行政法人 情報処理推進機構 の「システム監査技術者」「プロジェクトマネージャ」、全日本情報学習振興協会 の「個人情報保護士」「情報セキュリティ管理士」、日本規格協会 の「QC検定 準1級」等がある。
「資格を持っているからと言って、仕事ができるとは言い切れない」とよく言われるが、初めて会う人にはよい印象を与えられる。
合格するにはある程度の努力が必要なので、努力する人、資格が取れるだけの知識を持っている人だと思われるようだ。
資格試験対策は過去問を解くところから始める。
間違った問題はノートに書き残す。
参考書で調べたこともそのノートに書く。
参考書の通し読みは効率が悪いのでやらない。
ただし、初めての分野に挑戦する場合は例外で、参考書を3回ほど通し読みする。
同じ過去問を解き、間違わなくなったら別の過去問を解く。
なので最も新しい過去問から解くのがいいだろう。
これは資格試験に限らず、高校受験の頃からやってきた方法だ。
最も効率が良い勉強法だと思っている。
Pytorch とは、Facebook が開発した Python 用の機械学習ライブラリ。
Pytorch を pip でインストールしたので、その手順を公開する。
Pytorch をインストールする環境は以下のとおり。
https://pytorch.org/ にアクセスし、インストールオプションを選択する。
インストールオプションを選択すると項目が赤色になる。
今回選択したのは以下のとおり。
Run this Command: の右側にあるコマンドをコピーし、Pycharm の Terminal に貼り付けて実行。
PyTorch のバージョンをチェックし、検証用プログラムで動作確認を行う。
今回の記事を書くに当たり、PyTorch のインストール(Windows 上) を参考にさせていただいた。
ありがとうございました。
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学ぶオンライン講座
未経験からエンジニアを目指すTechAcademy Pro
この記事は、PC を所有し、PC の基本的な操作やソフトウェアのインストールなどが問題なく行える人を対象にしている。
経験上言えることは、教科書を最初から最後まで読んでも、プログラミングができるようになるとは限らないということ。
そればかりか、プログラミングが嫌いになるという危険性がある。
では、教科書を読む代わりに何をすればよいのだろうか。
まずは、開発環境を整えて「Hello World」を表示するプログラムを作ってみよう。
そして、どんなプログラムが作りたいのかを考えよう。
作りたいプログラムが思いついたら、その処理順序を考えてみる。
たとえば、
という処理順序であれば、ファイルを読み込む方法を調べて実際にコードを書いてみよう。調べる方法はネットでも教科書でも何でもよい。
その処理が問題なく動作するようになるまで調べながらコードを書き直す。
すべての処理順序が実装できるまで繰り返す。
この工程がプログラミングの知識を増やしてくれる。
プログラムが動くと嬉しい。
その喜びを味わい続けることが上達への近道である。
初めの頃は基本的な機能しか思いつかない。
しかし、実際にプログラムを動かしていると、いろいろな機能を追加したくなってくる。
アイデアが湧いてきたら、必ずメモしておこう。
そのメモはそのまま To Do List になる。
新しい機能は、すぐに実装できるものがあれば、調べないと実装できないものもある。
実際に調べてコードを書くことが技を磨く修行になる。
実装できる機能が増えれば増えるほど、プログラミング能力が向上していると実感できると思う。
実際にコードを書いてプログラムを動かすことが、モチベーションの維持向上に寄与する。
このモチベーション維持向上がプログラミング上達のコツでもある。
2020年7月30日に「KIKAGAKU |
AIを無料で学べる学習サイト」を一通り受講し終えた。
2020年4月6日から始めたので、4ヶ月弱かかったことになる。
詰めてやれば、数日で終わるような内容だが、仕事や別の趣味の合間でやっていたこともあり、モチベーションを維持するのが精一杯だった。
モチベーションを維持するためにも、学習記録をブログに残すようにした。
単に読むだけではなく、ブログに書き込むことによって達成感が持てるようにした。
ソースコードや実行結果もブログに掲載した。
ソースコードは写経というより、ほとんどコピペになった。
ただし、そのままだと出力できなかったり、元のコードにバグがあったりしたので、一部は改変している。
初期の頃の学習記録を読み直したところ、内容がかなり貧弱だったので、復習も兼ねてブログの書き直しを始めた。
復習し始めてみると、新たな気付きがあり、より理解が深まるような気がする。
面倒くさいけれど、やる価値はあると思う。
今回は、キカガクで「テキスト分類(TensorFlow)」を学んだ。
自然言語は今までのデータとは異なり、固定の長さのデータではなく、データごとに長さが異なるため、学習の際には固定の長さの数値に落とし込む必要がある。
文章を品詞ごとに分割する形態解析、単語を数値化する手法の一つである Bag of Words を使って自然言語の特徴量変換を行う。
文章を単語毎に区切る方法のことを 形態素解析 (morphological analysis) と呼ぶ。
MeCab を使用しての形態素解析を行う。
Tagger クラスをインタンス化する。
-Ochasen は形態素解析の出力方法のこと。
文章の分割には parse() メソッドを使用する。
分割されたテキストデータはエスケープシーケンスを取り除き、単語ごとに抽出を行う処理を施す必要がある。
入力変数は各記事(文書)、目的変数はニュースサイト名(ラベル)とする。
各記事(文書)を数値化し、ニュースサイト名に分類する。
この問題設定の場合、名詞が特徴となるため、形態素解析で名詞を抽出する。
特定の文字列でテキストデータを分けるときは、split() メソッドを使用する。
品詞が名詞の単語のみを抽出し、リストに格納する。
基礎的なテキストデータのエンコーディング方法(ベクトル化)の種類
Bag of Words (以下 BoW)とは、単語の出現回数によって単語を数値に変換する方法。
BoW の実装は scikit-learn を用いる。
scikit-learn を用いる場合、テキストデータは単語ごとに半角スペース区切りになっている必要がある。
join() メソッドを用いることでリストの要素を繋げられる
エンコーディングは CountVectorizer クラスを使用する。
インスタンス化後に
fit_transform() メソッドを使用すると、単語毎に ID が割り振られ、ID ごとの出現回数を元にベクトル化が行われる。
vocabulary_ 属性にはエンコーディングされた重複なしの単語とその ID
を確認できる。
エンコーディング後の数値は toarray() メソッドを使用して取得する。
実際のデータセットを用いて、文書分類の実装を行う。
テキストファイルごとに BoW を用いてエンコーディングを行う。
また、テキストファイルごとにどのカテゴリの文書なのかを示す目的変数の作成も行う。
glob を用いてファイルの読み込みを行う。
取り出したこの 1 テキストファイルが入力変数になる。
このテキストデータからこの記事がどのカテゴリに属するのかの分類を行う。
各ディレクトリに対応する要素番号を分類に使用するラベルとして使用する。
enumerate() を使うことで、for
文を用いて繰り返しを実行する際に要素番号も併せて取得することができる。
全てのディレクトリ・テキストファイルを読み込み、同時にラベル付けも行う。
前に作成した名詞抽出用の関数を使用して、文書全体で使用されている名詞を全て word_collect というリストに格納していく。
それぞれのテキストデータに対し名詞抽出を行う関数を適用し、リストに追加する前に半角スペース区切りの文字列に変換を行う。
全ての名詞を使用して辞書を作成した場合、使用される単語量が膨大になる(約 5 万単語)ことが想定されるため、エンコーディング時に引数 min_df を指定し、出現頻度が指定した値以下のものは取り扱わない設定を行う。
ニューラルネットワークを実装する。
モデルの定義・学習・評価を行い、文書分類がどの程度の精度で行うことができているのか次の手順で確認する。
今回は、キカガクで「機械学習による自然言語処理」を学んだ。
自然言語処理の流れ(文章の特徴を抽出するための操作)は次のとおり。
解決したいタスクに応じてデータを収集する。
HTMLのタグなど意味を持たないノイズを削除する。
BeautifulSoup や 標準ライブラリ re モジュールを使用する。
半角や全角、小文字大文字などを統一する。
表記ゆれ(「行う」と「行なう」、「りんご」と「リンゴ」、「Apple」と「apple」等)を統一する。
文章を単語ごと分割する。単語の分かち書き。
MeCab、Janome、JUMAN++ を使用する。
MeCab は MeCab: Yet Another
Part-of-Speech and Morphological Analyzer から mecab-0.996.exe をダウンロードしてインストール(文字コードは UTF-8 を選択)。
さらに、pip
install mecab-python-windows で Python 開発環境にもインストール。
語幹(活用しない部分)への統一を行う。
例:学ん(だ)→学ぶ
主に MeCab を使用する。
昨今の実装では基本形へ変換しない場合もある。
出現回数の多すぎる単語など、役に立たない単語を除去する。
ストップワードをまとめた辞書との一致検索や出現頻度による削除を行なう。
昨今の実装では除去しない場合もある。
機械学習で扱えるよう文字列から数値へ変換を行う。
タスクに合わせ、古典的な機械学習~ニューラルネットワーク選択する。
オープンデータセットとはある団体が保有しており、自由に活用できるよう公開しているデータのこと。
オープンデータセットは次のようなものがある。
オープンデータセットのまとめサイト
今回は、キカガクで「自然言語処理の基礎 - KIKAGAKU」を学んだ。
自然言語(Natural Language)とは
人工言語(Constructed Language)とは
自然言語処理とは、自然言語をコンピュータに処理させる技術・学問分野のことを指す。
自然言語処理はコンピュータによる知的な処理の代替が目標。
言語の処理・活用方法
自然言語処理の基礎技術とは、文章からより良い特徴を抽出するための根幹技術である。
基礎技術の分類
機械学習の本質は「データにおける自動的な特徴の抽出、関係性の構築」であるため自然言語とも相性が良い。
ニューラルネットワークは End-to-End 学習(入力変数と目的変数の直接的な結びつきの構築) ができるため、従来の基礎技術で必要だった複雑なチューニングや部分的な最適化、それらの専門知識が不要になった。
今回は「畳み込みニューラルネットワークの代表的なモデル - KIKAGAKU」を学んだ。
複数の入出力が発生するようなモデルの場合、Sequential API では記述できないため、Functional API を使って記述する。
VGGNet は非常にシンプルでわかりやすいアーキテクチャであるのに精度が高い。
VGGNet の特徴
3×3 フィルタを使用するのは、上下左右中心の情報が受容できる最も小さなサイズであるため。
パラメータ数が半減できるのに精度は高い。
GoogLeNet は Inception モジュールとして、複数のネットワークを1つにまとめ、モジュールを積み重ねる、Network In Network の構成がなされている。
Inception モジュールの内部では、異なるフィルタサイズの複数の畳み込み層を同時に通して、結合する処理が行われる。これはパラメータ数を削減して計算コストを下げつつ、複雑なアーキテクチャを組むために行われる。
また、Global Average Pooling も GoogLeNet で採用され、CNN で特徴マップを全結合層へつなぐ際に使用される。
これまでは特徴マップの各画素を順番に切り取って並べることでベクトル化していたのに対し、GAP では一つの特徴マップから Average Pooling で 1×1 のサイズにしたものを並べてベクトル化する。
ResNet は Residual モジュールを採用している。
層を深くすることで精度が向上する一方、深くしすぎると逆伝播時に勾配消失してしまう問題があり、その対策として
Residual モジュールが提案された。
Residualモジュールに、1×1 畳み込みを加えて、パラメータを削減しより効率的に学習を行える Bottleneck モジュールも提案された。
He 初期化は、活性化関数に ReLU を用いる際の、最適な重みの初期値として、平均 0 標準偏差 1 の正規分布からランダムに設定する。
Batch Normalization も ResNet で提案された。
ResNet は最大 152
層まで深くしたアーキテクチャが提案されており、各バリエーションの構成は以下の通り。
MobileNet はモデルサイズの軽量化を図りながら、高精度の予測を可能としたモデルであり、物体検出などの速度が求められる問題設定のバックボーンとして使用されている。
Depthwise Separable Convolution は、畳み込みの計算を Depthwise Convolution と Pointwise Convolution に分解することで、通常の畳み込み処理からパラメータ数を大きく削減することに成功した。
Depthwise Convolution は、 3 チャネルの画像に対し、各チャネルごとに 1 枚ずつフィルタを用意し、チャネル単位で畳み込みを行うが、各チャネルでの計算結果を足し合わせる処理は行わない。
Depthwise
Convolution では入力画像のチャネル数分のチャネルを持った特徴マップが出力される。
TensorFlow では layers.DepthWiseConv2D() で実装できる。
Pointwise Convolution は、1×1 のフィルタをDepthwise Convolution
で出力された特徴マップのチャネル数分用意して、畳み込み計算を行う。
TensorFlow では、layers.Conv2D(kernel_size=1, strides=1) で実装できる。
今回は「データ拡張 - KIKAGAKU」を学ぶ。
ショッピングサイトの商品を定期的にチェックするプログラムを Python で作った。
ショッピングサイトで欲しい商品があっても、よく売れる商品なのですぐに欠品になる。商品が補充されるのをずっと待っているわけにもいかないので、商品が補充されたときにメールで知らせてくれるプログラムを Python で作成した。
今回はそのプログラムを作成するためのポイントを公開しよう。
まずは、商品を購入したいショッピングサイトを開き、欲しい商品を検索してみる。
今回の例では東急ハンズのハンズネットで検索してみた。
下図は、検索結果のスナップショットの一部である。
アドレスバーには「https://hands.net/search/?q=XXXXX」(XXXXX は商品名)と表示された。
この URL を使用し、商品名のところを変更してやればよい。
(ソースコードの 13行目から 18行目までを参照)
検索結果の 0件がこの URL の HTML のどこにあるのか、知っておく必要がある。
上記のコードを実行してみると、この URL の HTMLが表示される。(コードが多いので省略)
HTML で「0件」の箇所を検索してみると、
<div class="result">検索結果 <span class="count">0件</span></div>
という行が特定できた。
商品の在庫があるかどうかは、クラス "count" が「0件」かどうかを判定してやればよい。
(ソースコードの 20行目から 27行目までを参照)
以上がショッピングサイトで商品の在庫をチェックするための準備作業である。
これらの情報を参考にして、コードを書いていけばよい。
在庫がなかったときは、検索した時刻を取得して在庫がなかったことをログに出力する。
(ソースコードの 30行目から 35行目までを参照)
在庫があったときは、メールを送信して在庫があったことを時刻とともにログに出力する。
(ソースコードの 37行目から 66行目までを参照)
今回メールサービスは GMAIL を使用している。
GMAIL を使用する場合、ログインで使用するパスワードはアプリパスワードにすること。
アプリパスワードの生成方法は、「アプリ パスワードでログイン - Google アカウント ヘルプ」を参照。
なお、ログ出力は在庫があってもなくても行うため、関数にしておいた。
(ソースコードの 71行目から 75行目までを参照)
検索頻度は10分おきにし、在庫があれば繰り返しから抜けるようにした。在庫がなければ最大144回( 24時間分)繰り返す。
検索頻度は控えめにして、ショッピングサイトに迷惑がかからないようにする。
(ソースコードの 10行目から 12行目まで、68行目から 69行目までを参照)
長時間繰り返し検索するため、プログラムは実行可能ファイル(exe ファイル)にして、バックグラウンドで実行できるようにしておく。(参考:Python ファイルをビルドしてEXE ファイルを作る方法)
バックグラウンドでプログラムを実行するには、バッチファイルを作成し、その中で start コマンドを使って exe ファイルを起動すればよい。
start /MIN inventory_check.exe
何かやりたいことがあっても、はじめからできないと諦めてしまうとその先はない。
できるはずと思ってあれこれ調べていけば、必ず解決策が見つかる。
壁にぶつかっても工夫を凝らせば乗り越えられる。
その気になれば、なんとかなるものだ。
今回は「畳み込みニューラルネットワークの精度向上 - KIKAGAKU」を学ぶ。
ようこそ、当サイトにお越しいただきまして、誠にありがとうございます。
当サイトでは、人生の改善・生活の改善をテーマとし、自身の経験や知識にもとづいた記事を提供してまいります。
よろしくお願いいたします。