GitHubの練習 その3 ~複数のアカウントの使い分け~
GitHubで趣味用と仕事用などでアカウントを分けたいときのためのメモ。
このあたりのページを参考にさせていただきました。
repositoryごとにアカウントを分ける
各repositoryのディレクトリに入って次のコマンドを打ち込み、GitHubのページをリモートに設定。
$ cd repository1
$ git remote add origin https://github.com/***/repository1.git
次に、アカウント、メルアドを設定。
$ git config user.name "***" $ git config user.email "***@example.com"
.git/config
にちゃんと設定されているか確認。
$ cat .git/config
[remote "origin"]
やら[user]
やらのところをチェック。
キーチェーンアクセスで履歴を消去
Macでやると自動でアカウントとパスワードが保存されてしまい、切り替えがうまくいきませんでした。
こちらのページを参考に履歴を消去。
- Spotlightで「キーチェーンアクセス」を検索
- キーチェーンアクセスで「すべての項目」を選択
- 「git」を検索
- github.comを削除
これでうまくいきました。
GitHubの練習 その2 ~branch~
前回に引き続き、GitHubの練習です。
plant-raspberrypi3.hatenablog.com
今回はbranchを中心に。
- branchとは?
- ローカルでbranchを作って作業
- branchをGitHub上にプッシュ
- branchをmasterにマージ
1. branchとは?
以下のページから引用。
ブランチとは、履歴の流れを分岐して記録していくためのものです。分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。
複数人で開発するときには必須の機能みたいです。
1人で作業するときの必要性はまだ実感していませんが、、、
とりあえず使ってみようということで。
2. ローカルでbranchを作って作業
今回も以下のページを参考にさせていただいています。
前回のmaster
での作業の続きからです。
$ git branch * master
ちゃんとmaster
になっていますね。
新しいbranchsub1
を作ってみます。
$ git branch sub1
branchsub1
に移動します。
$ git checkout sub1 $ git branch master * sub1
ちゃんとsub1
が作成されて、そちらに移動されています。
では、README.mdを再びいじってみます。
$ echo "" >> README.md $ echo "hello world" >> README.md $ cat README.md # hello-world test repository test from local hello world
branchsub1
にコミットします。
$ git add README.md $ git commit -m "Add description"
3. branchをGitHub上にプッシュ
早速、GitHubにアップロードというかプッシュします。
$ git push origin sub1 Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/***/hello-world.git * [new branch] sub1 -> sub1
GitHubのページで確認すると、master
以外にsub1
という名前のbranchが作成されているはず、、、
4. branchをmasterにマージ
マージするためには一旦master
に戻ります。
$ git checkout master
その後、マージを実行します。
$ git merge sub1
GitHubにマージ後のmaster
をpush
します。
$ git push origin master
GitHub上のmaster
にもsub1
に加えた変更が反映されているはず、、、
おまけ
git
のコマンドの参考ページのメモ。
GitHubの練習 その1 ~とりあえず使ってみる~
GitHubの使い方がいまいちわからなくて苦労したのでメモ。
GitHubの公式ページ
と以下のページを参考にさせていただきました。
- アカウントの作成
- repositoryの作成
- ローカルで作業してみる
- ローカルの作業結果をGitHub上へプッシュ
1. アカウントの作成
アカウント名、e-mailアドレス、パスワードだけで登録できます。楽ですね。
登録アドレスに送られてきたメールでVerifyするのを忘れずに。
2. repositoryの作成
GitHubページ上で作成します。ログインしたときの画面にある
「New Repository」
のボタンで作成できます。
- Repositoryの名前を入力
- Descriptionは入れても入れなくてもOK
- 無料プランの場合はPublic一択
- 「Initialize this repository with a README」はチェックを入れておく (READMEはいりますよね?)
- gitignoreとlicenseはあとで追加できるらしい (やり方は知らない)
仮に***
というアカウントでhello-world
というrepositoryを作成したことにします。
3. ローカルで作業してみる
Macの人はターミナルを開きます。(他のOSは各自)
作業用のディレクトリを作成して移動、git
を開始。
$ mkdir working $ cd working $ git init
git
コードは入っていました。なければインストール。
作業したいアカウントのリポジトリをダウンロード。
$ git clone https://github.com/***/hello-world.git
git clone
する場合は前述のgit init
は必要ないかも。
次に、ダウンロードされたか確認。
$ ls hello-world $ cd hello-world $ ls README.md
ちゃんとREADME.md
がダウンロードされています。
ちなみに、README.md
の中身も確認
$ cat README.md # hello-world test repository
これに追記。
$ echo "test from local" >> README.md $ cat README.md # hello-world test repository test from local
ローカルでgit
にadd
とcommit
$ git add README.md $ git commit -m "Add description"
4. ローカルの作業結果をGitHub上へプッシュ
では、「プッシュ」とやらをしてみます。(アップロードみたいなもの?)
$ git push origin master Username for 'https://github.com': *** Password for 'https://***@github.com':
元のwebページを確認するとアップロードされて反映されているはず、、、
次回は「ブランチ」とやらを使ってみる予定。
機械学習とTensorflowの用語集ページ
こんにちは。らずべりーです。
ラズパイさんで画像認識モデルの訓練ができるかなー、と先日入れたKerasで試したところ、見事にフリーズし撃沈orz
訓練はMacのほうでやろう、、、
TensorflowやらKerasのわからん
Kerasを使っていて、素人的にはよくわからない用語が多かったです。
何となくこういう意味なんだろうな、というのは想像はつくのですが、ドキュメントには(常識的すぎるのか)あまりちゃんと書いてなかったり、どこに書いてあるのかわからなかったりして困ってました。
Tensorflowの用語集ページを見つけた
TensorflowのGetStartedを見ていて、用語集へのリンクがついていたので、備忘録としてメモ。
Get Startedのページ
https://www.tensorflow.org/get_started/www.tensorflow.org
機械学習とTensorflowの用語集ページ
助かりますね。
たとえば、batchとbatch sizeの説明。
batch
The set of examples used in one iteration (that is, one gradient update) of model training.
batch size
The number of examples in a batch. For example, the batch size of SGD is 1, while the batch size of a mini-batch is usually between 10 and 1000. Batch size is usually fixed during training and inference; however, TensorFlow does permit dynamic batch sizes.
バッチ
モデル訓練の1回の反復(つまり、1回の勾配更新)で使用される一連の例。
バッチサイズ
バッチ内のサンプルの数。たとえば、SGDのバッチサイズは1ですが、ミニバッチのバッチサイズは通常10〜1000です。バッチサイズは通常、トレーニングと推論の間に固定されます。ただし、TensorFlowは動的なバッチサイズを許可します。
これから度々お世話になりそうです。
ラズパイカメラをJupyter Notebookから操作してハマった話
こんばんは。らずべりーです。
安易に実行すると危ないことがあるよ、という自分への教訓用のメモです。
久々にラズパイカメラをいじった
以前はraspistillなどでターミナルから操作していましたが、
plant-raspberrypi3.hatenablog.com
MobileNetやXceptionの画像認識と組み合わせていきたいなぁ、ということで、python-picameraを使ってみることに。
せっかくなら、Jupyter notebookから操作していろいろやりたいなー、ということでpyenv環境にJupyterを入れ直しました。
$ pip install jupyter
今回は特に何も問題なくすんなりいきました。よかった(´∀`*)ホッ
とりあえずプレビューしてみた
早速使ってみよう!ということで、とりあえずプレビュー。
#このコードは危険なハマりコードなのでそのままコピペしてはいけません! import picamera with picamera.PiCamera() as camera: camera.start_preview()
実行するとプレビューが全画面表示になります。
よしよし、と思ったのもつかの間、
「あれ?どうやって終了するんだっけ?ヽ(・д・!i!i)ノ」
キーボードを叩けども叩けどもうんともすんとも反応はなし。ドキュメントなどには「ターミナルからの実行だとCtrl+Dで終了できるよ!」と書いてあるものの、Jupyter Notebookにはなんの効力も発揮しませんでしたorz
これは、コンセントを抜くしかないのか、、、(´;ω;`) ブワッ
しかし実行中に抜いたらSDカードが壊れるかも、、、(´;ω;`)ブワッ
とパニクっていたところ、ふと
「そういえばiPhoneからSSH接続できるようにしてたわ」
plant-raspberrypi3.hatenablog.com
と思い出し、iPhoneのTerminiusアプリからSSH接続して
sudo reboot
しばらく待つとちゃんと立ち上がりました。壊れなくてよかったーε-(´∀`*)ホッ
ちゃんとドキュメントを読んでから始めないとだめですね。(こんなことをする無鉄砲ものは私くらいかもしれませんが、、、)
以下が公式ドキュメントにある安全なコードです。
picamera — Picamera 1.10 documentation
import time import picamera with picamera.PiCamera() as camera: camera.start_preview() time.sleep(10) camera.stop_preview()
stop_previewまでコードに書いてから実行しないと危険!
というお話でした。
真面目にドキュメント読もう、、、
おまけ
ちなみに、最近やっとwith
関数の使い方を把握しました、、、close
しなくて良いのは便利ですね。
おまけ2
そういえば、SSH接続でJupyterのプロセスをキルする方法もありましたね。そちらの方が安全そうなので、次に何かあったらそうしよう、、、
ラズパイで学習済みモデルを使った画像認識をしてみた その2
こんばんは。らずべりーです。
土日にお試ししていたラズパイで画像認識の件で追記です。
plant-raspberrypi3.hatenablog.com
モデルの読み込みと予測にかかる時間をちゃんと測ってみました。(環境によって違う場合がありますが、参考値として。)
MobileNet
モデルの読み込みにかかった時間: 53秒
一枚の画像の予測にかかった時間: 1秒
Xception
モデルの読み込みにかかった時間: 2分20秒
一枚の画像の予測にかかった時間: 4秒
やはりMobileNetは速いですが、Xceptionもあらかじめ読み込んでおけば、予測自体はすぐに終わるので実用上は問題なさそうです。
ラズパイをsambaサーバー化
ずいぶん前のエントリーで実施した旨書いていたのですが、久しぶりに見直したらSSH接続のほうの参照先のリンクが切れて参照できなくなっていたので、やばい!と思い、引用そのままですが備忘録としてメモ。
各コードの説明については引用元を参照してください。
引用元: www.virment.com
準備
$ sudo apt-get install samba #ユーザを作成 $ useradd -m user1 #user1をsambaユーザとして登録 $ pdbedit -a user1 #パスワードを設定 new password: retype new password: Unix username: user1 NT username: (以下略) #グループの作成 $ groupadd group1 #グループにメンバーの追加 $ gpasswd -a user1 group1 $ gpasswd -a user2 group1 #共有用ディレクトリの作成と設定 $ mkdir /home/public $ chgrp group1 /home/public/ #アクセス権の設定 $ chmod -R 774 /home/public/
sambaの設定ファイルの編集
$ vi /etc/samba/smb.conf
設定ファイルの中身。
[global] ## Browsing/Identification ### workgroup = WORKGROUP → ワークグループ名の設定 dos charset = CP932 → Windowsマシンとの通信時に使用する文字コードの指定 unix charset = utf-8 → Unixマシンとの通信時に使用する文字コードの指定 unix extensions = no → Macから接続する場合には必要 (詳細は未調査です) hosts allow = 192.168.1.0/255.255.255.0 → sambaサーバへのアクセスを許可するIPアドレスの指定 ### Debugging/Accounting ### log level = 1 → 出力するログのレベルを指定。 数値は0〜10まで指定可能。数値が大きいほど詳細なログを出力 log file = /var/log/samba/log.%m → ログの保存場所の指定。%mはアクセスしてきたユーザマシン名に 置き換わる変数。つまりこの場合はユーザマシン毎にログを出力する max log size = 1000 → ログファイルの最大サイズの指定。単位はキロバイト。 左の場合は最大1MB。1MBを越えると、ログファイル末尾に 「.old」が付けられて新しいログファイルが作成される。 すでに「.old」が存在していた場合は削除されて上書きされる ###### Authentication ###### map to guest = never → ゲスト認証の無効化。有効にする場合は「never」ではなく 「bad user」を記述 #============= Share Definitions =============# [homes] comment = Home Directories → ディレクトリの説明に記述されるコメント browseable = no → ディレクトリを共有一覧に表示しないための設定。 例えばwindowsの場合は「ネットワーク」上に表示されない。 表示する場合は「yes」を記述 writable = yes → ファイルへの書き込み許可の指定。 書き込みを許可しない場合は「no」を記述 valid users = %S → ディレクトリにアクセス可能なユーザの指定。 この場合はアクセスしてきたユーザが各自のディレクトリならば アクセス可能で、自分以外のユーザはアクセス不可。 %Sはアクセスしてきたユーザ名に置き換わる変数。 [public] path = /home/public → 共有ディレクトリのパス browseable = yes writable = yes valid users = @group1 → ディレクトリにアクセス可能なユーザをグループで指定。 グループを指定する場合はグループ名に@を付けて指定する。 この場合はgroup1に属するユーザのみがpublicにアクセス可能になる。