学習記録

2020-02-09に作成

個人用の学習記録。成果がなくとも毎日更新。

所有者限定モードのためこのボードには投稿できません ボードとは?

Week4

Coursera

Non-linear Hypotheses

Q. ロジスティック回帰があるのに、なぜNNを使うのか?

特徴がx_1, x_2だけであればロジスティック回帰で良い。
しかしx_1〜x_100もの数を扱うとなると、それらを二次や三次の方程式で表したx_1^3やx_1 * x_2といった特徴も扱うことになり、合計で5000以上の特徴を扱う必要が出る。
特徴が多いとオーバーフィットにつながり、また計算コストが高くなる。
この問題は画像認識を解く際、特に顕著になる。

Model Representation I

ニューラルモデル

x_0はbiasを表すが、常に1なので省略する時もある。
この講義ではθをparameterと呼ぶが、weightと呼ぶ人もいる。

次元sの計算

jがレイヤーのインデックス、sがユニットの数だとする。
下の例ではs_1=2、s_2=4となる。
1.jpg

この時のΘの次元は下記の式で求めることができる。
2.jpg
先の例に当てはめると、4*(2+1)から次元は4*3であることがわかる。


LPIC Lv1

コマ問

  • chownコマンドで所有者グループを切り替えることができる。
    .の意味はコロンと同じ
  • catコマンドは空行に行番号を付けるかどうかで、-n(-number)と-b(-number-nonblank)オプションを使い分ける。参考

LPIC あずき本

10.3.4 エイリアス

ある宛先のメールを別のメールアドレスで受け取る。
設定には2通りの方法がある。
- /etc/alieasesでエイリアスを設定する方法。
- 各ユーザに~/.forwardを用意する方法。

/etc/aliasesを使う場合

  • aliasesファイルの記述について
     root: admin, lpic
     のように書くとroot宛にメールは届かなくなる。
  • newaliasesコマンドで設定を有効にする。
     この処理ではMTAが参照するDBファイルを更新する。

~/.forwardを使う場合

  • ユーザーが各自で設定できる。

LPICあずき本

9.2 ジョブスケジューリング

定期的なジョブはcrontab、1回限りの予約はatコマンドを使う。

crontabコマンドのオプション

-e Edit
-l list
-r remove

crontabファイルは/var/spool/cron以下に置かれている。

crontabファイルのフィールド

  • 分 時 日 月 曜日 コマンド
  • *は全ての値にマッチ
  • 間隔で指定する場合、「*/2」
  • 曜日は数値と文字のどちらかで表され、0(日曜)〜6(土曜)、7も日曜。

LPIC あずき本

アクセシビリティ

スティッキーキー、ラッチ、ロック

障がいによっては複数のキーを同時に押す操作が困難。
スティッキーキーを有効にすると、別のキーを入力するまでの間、修飾キーが押されたままになる。
この状態をラッチという。
修飾キーを押したままの状態にしたい場合、連続で押すとロック状態にできる。

スローキー

キー押下を認識する時間を調整したり、キー押下に合わせてビープ音を鳴らす。

バウンスキー

同じキーを連続して押しても、入力は連続とみなさないようにする。

トグルキー

NumLockなどはキーボードのLEDランプで状態を示すが、それをビープ音でも報せる。


7.2.4 シェルスクリプトの実行環境

LPIC あずき本
- bashの引数にシェルスクリプトを指定すると、実行したシェルの子プロセス(bash)の上で実行される。
- シェルスクリプトはSUIDやSGIDでなく実行したユーザの権限で動作する。これはセキュリティ上の理由によるもの。

noteにおける個人情報の定義

https://twitter.com/HiromitsuTakagi/status/1294641521321365505
「noteのIPアドレスが個人情報に該当するのは、〜(割愛)〜個人に紐づいたデータセット内の1属性として記録されているからである。」という説明がわかりやすかった。


Javascriptのデバッグで便利だと思ったメソッド
- debugger
- JSON.stringify(dict) [New!]


LPIC
LPICあずき本

5.4.2 ファイルの検索

findコマンド

-atime access時刻
-mtime modified時刻
-exec rm {} \;のように書ける。

locateコマンド

ファイル名DBに基づいて検索を行い、findより高速。DBの更新が必要となる。

updatedbコマンド

ファイル名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を見間違えた。


Laravel From Scratch

Attach and Validate Many-to-Many Inserts- EPISODE 33

ErrorException「Array to string conversion」

下記の変更前のコードは検証した結果を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

isset vs array_key_exists

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の勉強を再開した時に調べたこと。

プロジェクトについて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?

Laravel From Scratch

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テーブルに存在する名前をクエリで指定したところ再現できた。


Coursera, Machine Learning, 2週目, Linear Regression

躓いた点
- Σ f(x)^2という式を(Σ f(x))^2と解釈したが、正しくはΣ(f(x)^2)の解釈が正しかった。
- θ^T * X のまま、theta' * Xで実装できると思っていた。
- 下の書き方に慣れない
- 1/2/m
- x.^2


不明点

Courseraでoctaveの課題を解いているが、処理を途中で中断させる方法がわからない。

調べたこと

Octaveでプログラムを途中で終了する方法

解決

Ctrl-cで中断できると問題文に書いてあった。
「If you wish to quit, typing ctrl-c will stop the program in the middle of its run.」


LPIC

調べたこと
静的ライブラリの拡張子はa(Archive)。https://stackoverflow.com/a/21283879

パーフェクトPHP

int

0xと0(8進)を先頭に付けることができる。
PHP_INT_MAXで最大を取得できる。最大値を超えるとfloatへキャストされる。
この型へのキャストには(int), (integer), intval()を使う。

float

floatと表記されるが、実際は倍精度浮動小数点(double)。
変数の初期化には実数(1.2)や指数表記(1.2e3)が使える。
キャストには(float), (double), floatval()を使う。

文字列

ダブルクォートの中で$を使うと変数として展開される。
${var}のようにどこまでが変数名か明記するべき。