AWS入門中

はじめに

AWSのアカウントを作成したので、チュートリアルを行いながら、忘れやすそうな事柄についてメモしておく。(リンクも張っておく)

クラウドでの Linux 仮想マシンの起動方法 – AWS

 

鍵の保管場所

Windows

チュートリアルの推奨通り、 

C:\user\{ユーザー名}\.ssh\MyKeyPair.pem

にキーペアを保存。.sshフォルダを作るには".ssh."とフォルダ名の最後にドットを追加すると先頭ドットが可能になる。

Mac

ダウンロードするキーペアを MyKeyPair.pem というファイル名で  ~/.ssh ディレクトリに保存。ダウンロードしたら chmod 400 でRead権限を自分のみに変更する。

インスタンスへの接続(SSH)

Windows

Git for Windowsをデフォルト設定でインストールする。(Bashを使うため?既にインストールしてあった。)デスクトップ上右クリックメニューにGit Bash起動があるのでそれを使う。

SSHでのインスタンス接続コマンドは、

ssh -i 'c:\Users\ユーザ名\.ssh\MyKeyPair.pem' ec2-user@{Instance's_public_IP_Addr}

pemファイルは上記のキー保管場所、ユーザ名は「ec2-user」でよい(最初、AWSのアカウント名かと思った)。インスタンスへの接続切断はexitで。(切るだけなのでshutdownではない)

Mac

Macの場合、ターミナルからデフォルトのSSHでアクセスする。

ssh -i ~/.ssh/MyKeyPair.pem ec2-user@{Instance's_public_IP_Addr}

他はWindowsの時と同様。

インスタンスの削除

EC2コンソールの Action > インスタンスの状態 > 削除 で。(リストにはterminated状態で残る。)

Python学習(書籍Fluent Pythonより)

はじめに

Pythonの学習としてこの本↓の special methods のオーバーライドを試してみる。
amzn.asia

ソースコード

写経したコードは以下のとおり。__init__に関しては特筆する必要はないでしょう。(自分には必要だけれど)

from math import hypot

class Vector:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def __repr__(self):
        return 'Vector(%r, %r)' % (self.x, self.y)

    def __abs__(self):
        return hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

    def __add__(self, other):
        x = self.x + other.x
        y = self.y + other.y
        return Vector(x, y)

    def __mul__(self, scalar):
        return Vector(self.x * scalar, self.y * scalar)

v1 = Vector(2, 4)
v2 = Vector(2, 1)
print(v1 + v2) # Vector(4, 5)
v = Vector(3, 4)
print(abs(v)) # 5.0
print(v * 3)  # Vector(9, 12)
print(abs(v * 3)) # 15.0

各メソッドの機能

__repr__

offcial string representationとある。ソースコードにもあるprintなどで表示される表現を規定する、ってことでいいんでしょうか。(__str__()は文字列型へのデータ変換?なのでこれとは別。)

__abs__

組み込み関数abs(object)で呼ばれた時の動作。

__bool__

truth value testingとあるので、if文の条件に使うのか。

__add__ , __mul__

それぞれ算術演算(+, *)の時の動作。乗算はVectorに対するスカラー乗算。(内積はnumpyに倣ってdot()とか定義したほうがいいでしょうか。)

math.hypot()

なんだこれ、ってことでリファレンス。
9.2. math — Mathematical functions — Python 3.7.0 documentation
Return the Euclidean normとあり、まんまsqrt(x*x + y*y)と書いてあるのでベクトルの長さですね。

リファレンス

上記の特殊関数を調べるのに参考にした。
3. Data model — Python 3.7.0 documentation

追記

このページも結構良さそう。
特殊メソッド名 - Dive Into Python 3 日本語版

メモ:Go langのインストール

インストール記録

Goをインストールしたので、その時の操作の記録。(Go Langのインストールページを見ればいいのだが、いちいち見に行くのが面倒なのと指示通りに設定したか確定できないため)

 

手順

ダウンロードしたmsiファイルを起動。デフォルトのc:\goにインストール。

インストーラがPATH環境変数をc:\Go\binに通してくれる、と書いているが、実際は%GOPATH%\binが設定され、GOPATH環境変数自体はc:\Users\my_account\goなので、新たにPATHにc:\Go\binを追加する。

 

インストール確認

%USERPROFILE%goに移動して(c:\Users\my_account\go)、src/helloディレクトリを作成&移動。サンプルのhello.goファイルを作成して、コマンドラインでhelloディレクトリから >go build & >hello で動作確認完了。

 

スクリプト実行(2018/9/4追記

下記より

qiita.com

> go run filename でコンパイル(exe出力)せずに実行可能。

ユニティちゃんを歩かせる

はじめに

ユニティちゃんを(既存のPrefabでなく)前後に移動させることができたので記録として残します。

参考サイト:

nn-hokuson.hatenablog.com

 

準備(配置や設定)

適当にオブジェクトを(真似して)配置します。(配置の際にVキーでの頂点スナップというのも少し覚えました。)

f:id:kcha:20180815102303j:plain

配置したのはユニティちゃんのモデルだけなので、以前のように配置して即動かせるという訳でなく。

まずunitychanという名前でAnimator Controllerを作成し、それを予めunitychanモデルにAdd ComponentしておいたAnimatorのController欄に入力。

f:id:kcha:20180815102622j:plain

アニメーターunitychanの状態遷移を以下のように設定。

f:id:kcha:20180815103500j:plain

遷移条件のためのパラメータSpeedを設定。最初、パラメータの追加の仕方が分からず頭が?になりました。公式サイトのチュートリアル重要。

アニメーターコントローラー - Unity

立ち、前進、後退のモーションにそれぞれユニティちゃんアセットのWaitと歩行前後をあてがって、(Foot IKもつけておきます)

f:id:kcha:20180815104611j:plain

f:id:kcha:20180815104614j:plain

f:id:kcha:20180815104617j:plain

状態遷移に条件(ここで前述したパラメータを使用。他に移動状態から立ち状態に戻る遷移もあります。)を設定し、Has Exit Timeのチェックを外します。外さないと状態遷移が即時発生しない?要勉強。

f:id:kcha:20180815104847j:plainf:id:kcha:20180815104844j:plain

 物理影響を与えるためRigidbodyを、地面を突き抜けないようCapsule Colliderをそれぞれアタッチ。

f:id:kcha:20180815102700j:plainf:id:kcha:20180815102649j:plain

Capsule Colliderの底の丸みのせいか、最初X,Z軸の回転を制約していなかった時、実行してしばらく経つとモデルがすっころがることに気付きました。)

f:id:kcha:20180815103933j:plain

 

スクリプト

ユニティちゃんの移動処理、およびAnimator ControllerのSpeedパラメータを操作するためのスクリプトをユニティちゃんにアタッチします。 

Study for Unity that Charactor moving forward and ...

 

ありゃ。 

youtu.be

(最初、移動方向は画面の左右X軸方向なので、Vector3.rightかと思ったのですがTransform.Translate()はrelativeTo変数がデフォルトだとモデル自身の軸になるので前後させるためにVector3.forwardに修正。)

Transform.Translate - Unity スクリプトリファレンス

 

完了

方向を修正して、前後に歩くようになりました。以上。

youtu.be

 

Numpyのrandom.choice()

はじめに

以下の本を進行中。4章に入って、後でも役に立ちそうな関数があったのでメモ。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

 

 

random.choice()

本の中で大量の訓練データの中から少数のデータをランダムに抽出して学習するミニバッチ学習が行われており、それで使うのがnumpy.random.choice()

numpy.random.choice — NumPy v1.15 Manual

ただ本の中だとreplace引数をFalseにしていないので、少ない確率でデータの重複が起こる可能性が残っている?

gist6e3645fdfde5fc430527ec0c5705ef8e

 

pパラメータとか

出現確率を制御できるみたいなので後で調べる。

 

 

 

勉強:ニューラルネットワーク:活性化関数

 はじめに

下記の本を進めていく上で、メモとして。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

 

 

実装とグラフ出力

コードはこう。 

gist1b625c7cd56ab79cd814d173deda40de

出力されるグラフ。

f:id:kcha:20180804183314p:plain

配列、リストをスペース(何かの文字列)区切りで出力する方法 in c#, python3

はじめに

よく問題を解いている paiza (競技プログラミング&就活サイト)で問題を解く際、配列やリストデータをスペース(または何某かの文字)区切りで出力することが多くあるので備忘録として書き残しておく。

C#Pythonと複数の言語でやってみてどちらも Joinという名前の関数を使うと簡単だとわかり、以降、自分のググラビリティがあがったなあ、と思う。

 

C#

stringクラスのJoin関数で第一引数に区切り文字列、次に区切り対象の配列を当てればよい。

gist75b9b1467cd1e8b4d95173efe04e6b70

 

Python3

区切り文字列のjoinメソッドを呼び出して、引数に文字列のリスト(文字列でないとダメ)を当てる。数値のリストといった場合はmap関数でstr関数をマップするのが楽。

Way to output list data divided some string.