直接"/home/ユーザ名/.ssh/known_hosts"を編集してもよいのですが、今回コマンドでやってみましたのでメモしておきます。
$ ssh-keygen -F ホスト名
$ ssh-keygen -R ホスト名
-Fオプションは確認、-Rオプションで削除できました。
参考
PRiMENON:DiARY「[Ubuntu]ssh 接続しようとすると「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」が表示されるときは」
Shake-Shake4 5はResNetをベースとし、テンソルに対するdata augmentationを行うことで、正則化を実現する手法です。通常data augmentationは画像に対して行われますが、中間層の出力テンソル(特徴ベクトル)に対してもdata augmentationを行うことが有効であろうというのが基本的なアイディアになります。
下記にShake-Shakeで利用される番目のresidual unitの構成を示します。
上記のようにShake-Shakeでは、residual unit内の畳み込みを2つに分岐させ、それらを一様乱数によって混ぜ合わせるということを行います。直感的には、画像ドメインに対するdata augmentationにおいてランダムクロッピングを行うことで、その画像内に含まれている物体の割合が変動してもロバストな認識ができるように学習ができるように、特徴レベルにおいても各特徴の割合が変動してもロバストな認識ができるようにしていると解釈することができます。
興味深いのは、backward時には、forward時の乱数とは異なる一様乱数を利用するということです。テスト時には、乱数の期待値である0.5を固定で利用してforwardを行います。
論文中では、上記のとを、0.5固定にしたり、それぞれ同じ値を利用したりする組み合わせを網羅的に検証しており、どちらも独立してランダムに (shake) する形が良いと結論付けています。
BackwardでのShakeは、residual unit毎に、learning rateをランダムにスケーリングしているような効果があり、SGDにおいて最適解に辿り着く確率を上げているのではないでしょうか(※個人の感想です)。
とは、バッチ単位で同一にするか、画像単位で独立に決定するかの2通りが考えられますが、こちらは画像単位で独立に決定するほうが良いと実験的に示されています。
これらの外乱効果は、ニューラルネットからすると迷惑限りないことですが、結果として強い正則化の効果をもたらし、既存手法に対しかなりの高精度化を実現できています。
なお、Shake-Shakeの学習で特徴的な点として、学習率の減衰をcosine関数で制御6し、通常300エポックかけて学習を行うところを、1800エポックかけてじっくりと学習することが挙げられます。これはShake-Shakeの効果により、擬似的に学習データが非常に大量にあるような状態となっているため、長時間の学習が有効であるためと考えられます。
ev3にpip3の入れ方
sudo apt-get install curl
curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python
エラーの場合
apt get update
してみるといいかも
ssh接続エラーの場合
$ ssh-keygen -F ホスト名
$ ssh-keygen -R ホスト名
python等でプロジェクトごとに環境構築する
prenvを用いた環境構築
prenv install
sudo git clone git://github.com/yyuu/pyenv.git ./pyenv
pathの設定
export PYENV_ROOT=$HOME/.pyenv export PATH=$PYENV_ROOT/bin:$PATH eval "$(pyenv init -)"
pythonバージョン指定したインストール
pyenv install 3.6.1
で現在使っているバージョンとインストールされているバージョンを確認できる。
あとは、ローカルだったり、グローバルだったり、お好みにpythonのバージョンの設定を行うだけ。
今回は全てのディレクトリにおいて、2.7.9を使うようにします。
でOK。
pip install インストール先指定 方法
pip install --install-option="--install-scripts=/home/kobayashi/.prenv/versions/3.6.1/lib/python3.6/site-packages" keras
# pyenv-virtualenvのインストール。 $ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv # .xxxrcに初期設定を追記する # 何故evalを使っているのか、オプションの`-`ってなんだ、と疑問に思ったのでスタックオーバーフローで質問してみました。 # http://ja.stackoverflow.com/questions/32043/xxxenv-の初期化時のeval-xxxenv-init-の意味 vi ~/.bashrc eval "$(pyenv virtualenv-init -)" # pyenv virtualenv にPythonバージョンと仮想化環境を識別する任意の名称(tag)を指定します。 $ pyenv virtualenv <pyversion> <tag> # するとそれに対応するsite-packagesディレクトリが生成されます Requirement already satisfied: setuptools in /home/vagrant/.pyenv/versions/<pyversion>/envs/<tag>/lib/python<X.Y>/site-packages Requirement already satisfied: pip in /home/vagrant/.pyenv/versions/<pyversion>/envs/<tag>/lib/python<X.Y>/site-packages # 作成した仮想環境はversionsから確認できます。 $ pyenv versions system 3.5.3/envs/virtual-3.5.3 # << この二つは多分同じ virtual-3.5.3 # << # 作成したタグ名をactivateサブコマンドに指定すると、仮想環境が有効になります。 $ pyenv activate <tag> # こんな感じでシェルのプロンプトの左にタグ名が表示されるはず (<tag>)$ # 仮想環境を終了するにはdiactivateを実行します。 $ pyenv diactivate # 通常のpyenvと同様にディレクトリローカルのvirtualenvも作成できます。 # アプリケーション開発プロジェクトのルートディレクトリに対して、pyenv localを # 指定しておくとよいでしょう。 $ pyenv local <tag>
仮想環境有効
$ pyenv activate <tag>