Week4
特徴がx_1, x_2だけであればロジスティック回帰で良い。
しかしx_1〜x_100もの数を扱うとなると、それらを二次や三次の方程式で表したx_1^3やx_1 * x_2といった特徴も扱うことになり、合計で5000以上の特徴を扱う必要が出る。
特徴が多いとオーバーフィットにつながり、また計算コストが高くなる。
この問題は画像認識を解く際、特に顕著になる。
x_0はbiasを表すが、常に1なので省略する時もある。
この講義ではθをparameterと呼ぶが、weightと呼ぶ人もいる。
jがレイヤーのインデックス、sがユニットの数だとする。
下の例ではs_1=2、s_2=4となる。

この時のΘの次元は下記の式で求めることができる。

先の例に当てはめると、4*(2+1)から次元は4*3であることがわかる。
LPIC Lv1
LPIC あずき本
ある宛先のメールを別のメールアドレスで受け取る。
設定には2通りの方法がある。
- /etc/alieasesでエイリアスを設定する方法。
- 各ユーザに~/.forwardを用意する方法。
LPICあずき本
定期的なジョブはcrontab、1回限りの予約はatコマンドを使う。
-e Edit
-l list
-r remove
crontabファイルは/var/spool/cron以下に置かれている。
LPIC あずき本
障がいによっては複数のキーを同時に押す操作が困難。
スティッキーキーを有効にすると、別のキーを入力するまでの間、修飾キーが押されたままになる。
この状態をラッチという。
修飾キーを押したままの状態にしたい場合、連続で押すとロック状態にできる。
キー押下を認識する時間を調整したり、キー押下に合わせてビープ音を鳴らす。
同じキーを連続して押しても、入力は連続とみなさないようにする。
NumLockなどはキーボードのLEDランプで状態を示すが、それをビープ音でも報せる。
LPIC あずき本
- bashの引数にシェルスクリプトを指定すると、実行したシェルの子プロセス(bash)の上で実行される。
- シェルスクリプトはSUIDやSGIDでなく実行したユーザの権限で動作する。これはセキュリティ上の理由によるもの。
https://twitter.com/HiromitsuTakagi/status/1294641521321365505
「noteのIPアドレスが個人情報に該当するのは、〜(割愛)〜個人に紐づいたデータセット内の1属性として記録されているからである。」という説明がわかりやすかった。
Javascriptのデバッグで便利だと思ったメソッド
- debugger
- JSON.stringify(dict) [New!]
LPIC
LPICあずき本
-atime access時刻
-mtime modified時刻
-exec rm {} \;のように書ける。
ファイル名DBに基づいて検索を行い、findより高速。DBの更新が必要となる。
ファイル名DBの更新。
ディストリビューションによってはcronで更新される。
自分の環境でもcronに設定されているのか確認しようとした。
どうやらcrontab -lで確認できるらしい。
自分の環境だと下記のように表示されたので、crontabは使ってないのだろうか
$ crontab -l
crontab: no crontab for user
ユーザーごとに設定ファイルを持つこともあるようなので-uオプションも使ってみたが、やはり設定ファイルはなさそう。
参考:crontabして何も見つからないのに設定ファイルはあるとき
$ sudo crontab -u root -l
crontab: no crontab for root
私の環境はMacなので、そもそもupdatedbがNot Foundなことに気づいた。
Macではlocate.updatedbを使うらしい
localeとlocateを見間違えた。
Attach and Validate Many-to-Many Inserts- EPISODE 33
下記の変更前のコードは検証した結果をnew Article()メソッドに渡しているが、これだと例外が発生する。
tagsはarticlesテーブルのカラムではなく、Relation?であるためだ。
変更後のコードのように検証とインスタンス作成の処理は分ける必要がある。
変更前
$article = new Article($this->validateArticle());
変更後
$this->validateArticle();
$article = new Article(request(['title', 'excerpt', 'body']));
protected function validateArticle(): array
{
return request()->validate([
'title' => 'required',
'excerpt' => 'required',
'body' => 'required',
'tags' => 'exists:tags,id'
]);
}
モデルの中でwithTimestampsメソッドを下記のように使う。
return $this->belongsToMany(Tag::class)->withTimestamps();
パーフェクトPHP
P88
- issetが速い
- issetは値がnullの場合にfalse、array_key_existsはtrueを返す。
P91
PHPにおける式は値を持つ全てのものを指す。
例えば$var, =, 1はそれぞれを1つの式として扱う。
Attach and Validate Many-to-Many Insertsを勉強していたところエラーが出た。
フォームからリクエストを送ると「Database connection [tags] not configured」というエラーが表示される。
ドットとカンマを間違えていた。
Database connection [users] not configured
数日ぶりにLaravelの勉強を再開した時に調べたこと。
composer.lockの下記の記述を確認する。
"name": "laravel/framework",
"version": "v7.20.0",
参考:How to know Laravel version and where is it defined?
> App\Article::truncate();
参考:How to delete all the rows in a table using Eloquent?
https://laracasts.com/series/laravel-6-from-scratch/episodes/32?autoplay=true
URLに「?tag=personal」と書いても404が返ってくるので、@forelseで実装しした結果を確認できない。
コメントに
「it gave you 404 because the name that you used is not inside the tag table in the database if you try "personal" which Jeffrey used you will get the same result result because personal is a tag that is in the database but it not linked to any article.」
とあるように、
tagsテーブルに存在する名前をクエリで指定したところ再現できた。
躓いた点
- Σ f(x)^2という式を(Σ f(x))^2と解釈したが、正しくはΣ(f(x)^2)の解釈が正しかった。
- θ^T * X のまま、theta' * Xで実装できると思っていた。
- 下の書き方に慣れない
- 1/2/m
- x.^2
Courseraでoctaveの課題を解いているが、処理を途中で中断させる方法がわからない。
Ctrl-cで中断できると問題文に書いてあった。
「If you wish to quit, typing ctrl-c will stop the program in the middle of its run.」
調べたこと
静的ライブラリの拡張子はa(Archive)。https://stackoverflow.com/a/21283879
0xと0(8進)を先頭に付けることができる。
PHP_INT_MAXで最大を取得できる。最大値を超えるとfloatへキャストされる。
この型へのキャストには(int), (integer), intval()を使う。
floatと表記されるが、実際は倍精度浮動小数点(double)。
変数の初期化には実数(1.2)や指数表記(1.2e3)が使える。
キャストには(float), (double), floatval()を使う。
ダブルクォートの中で$を使うと変数として展開される。
${var}のようにどこまでが変数名か明記するべき。