日々精進

新しく学んだことを書き留めていきます

2016-09-01から1ヶ月間の記事一覧

Pythonの後置if

AI

あるけど、必ずelse句が必要らしい。ちょっといまいち。。 x.eval() if True はダメ。 参考: jesushill.hatenablog.com

numpyのflattenとravelの違い

AI

flatten 非破壊 低速 ravel 破壊的 高速 という違い。 参考: deepage.net

InceptionResNetV2のlayersをSequentialクラスに渡すと「ValueError: Input 0 of layer conv2d_6 is incompatible with the layer」エラー

AI

原因はよく分からないが、Sequential APIでなく、Functional APIを使うと直った。 サンプルコードは以下。 base_model = tf.keras.applications.inception_resnet_v2.InceptionResNetV2(weights='imagenet', include_top=False, input_shape=(WIDTH, HEIGHT,…

スポット価格が変わってないのにスポットインスタンスが終了する

AI

スポットリクエストのステータスの文言は以下。 instance-terminated-capacity-oversubscribed: Your Spot instance was terminated as there is no more unused capacity available in this pool. 以下を見ると、スポット価格が変わって無くてもスポットイ…

Tensor flow実行時に「ValueError: Invalid type tf.int32 for pow:0, expected: [tf.float32, tf.float64, tf.float16, tf.bfloat16].」エラー

AI

GradientDescentOptimizer がfloatにしか対応してないためだった。 x = tf.Variable(0, name='x') を x = tf.Variable(0., name='x') に修正すると直った。 参考: stackoverflow.com

Kerasでモデルを作ると「AttributeError: 'MaxPooling2D' object has no attribute 'outbound_nodes'」エラー

AI

原因はTensor flowに含まれているtf.kerasと素のkerasをまぜて使っていることだった。 tf.kerasに統一すると直った。 これ引っかかるの二度目だな。。 参考: stackoverflow.com

ndarrayにlistを代入する

AI

以下のようにlistと同じ大きさのndarrayを作って代入する。np.array()は32以上の長さのArrayを作れないので長いArrayを作る時に便利。 my_ndarray = np.empty(len(my_list)) my_ndarray.flat[:] = my_list 参考: stackoverflow.com

PyCでSSH Interpreter使用時に環境変数を設定する方法

AI

以下の方法だとうまくいかなかった。 ・~/.bashrcにexportを追記 ・Settings>Build,Extension,Deployment>Console>Python Console>Environment Variableで環境変数を設定する 正しいやり方は以下。 Edit Configuration>Environment Variableで環境変数を設定…

conda activateを実行すると「CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.」エラー

AI

AWSのDeep Learning AMIでEC2を起動してconda activateを実行すると発生した。 以下を.bashrcに書けば直った。 . ${HOME}/miniconda3/etc/profile.d/conda.sh conda activate base 参考: qiita.com

PythonのType Annotationは付けられない場合がある

AI

以下のように、for文の中や複数の変数を1行で宣言する場合などはType Annotationが付けられない。まじか。。 for i: int in range(6): ... j: int, k: int = func() 以下のように変数宣言を外だしすればAnnotationをつけられるが、読みづらくなるのでやりた…

WinSCPでS3にファイルをアップロード・ダウンロードする

IT

WinSCPはS3に対応しているので設定をぽちぽちするとできるようになる。マジ神。 dev.classmethod.jp ブラウザからS3を使うよりずっと快適になった。これは素晴らしい。

WinSCPでS3にファイルをアップロード・ダウンロードする

IT

WinSCPはS3に対応しているので設定をぽちぽちするとできるようになる。マジ神。 dev.classmethod.jp ブラウザからS3を使うよりずっと快適になった。これは素晴らしい。

windows版DashのVelocityを使ってみる

AI

MacでDashを使ってて便利だったのでWindowsにもないかなーと思って調べたら、Dash公式も認めるDashクローンがあった。 velocity.silverlakesoftware.com 見つけた時はかなりテンション上がったが、使ってみると機能が少ない。。 とりあえず無くて非常に困る…

リストとndarrayの相互変換

AI

リストからndarrayに変換 np.array([1,2]) ndarrayからリストに変換 x_train.tolist() 参考: note.nkmk.me

Pythonクラスはobjectを継承しなくていい

AI

class Foo(object): という書き方は古いらしい。Python3では class Foo: という書き方で問題無いらしい。 参考: stackoverflow.com

boto3の型Annotation

AI

以下のパッケージをインストールすると型Annotationを付けられるようになる。 pypi.org 型Annotationつけるためだけにパッケージ入れるのはちょっと憚られるが。。

boto3でS3にアクセスすると「botocore.exceptions.NoCredentialsError: Unable to locate credentials」エラー

AI

権限の問題。 以下のようにアクセスキーとシークレットアクセスキーを引数に含めればよい。 アクセスキーなど人ごとに異なるものは環境変数から持ってくるようにする。 # 各自のアクセスキー、シークレットアクセスキーを環境変数より取得 ACCESS_KEY = os.e…

PyCharmでKeyword引数の色が赤色になっているのを直す

AI

PyCharmの見た目をDarculaにした場合だけかも知れないが、Keyword引数の文字色が赤色になっていて、 エラーかと見間違う。 この色は以下から変更出来る。 Settings | Editor | Color Scheme | Python | Keyword argument このデフォルト設定は絶対おかしいだ…

PyCharmでdocstringのひな形を生成する

AI

関数定義のすぐ下で"""を入力し、Enterをおすとひな形が生成される。 例は以下。 def __init__(self, border: BoxPoint, name: BoxPoint, original_image: np.ndarray): """ Args: border: name: original_image: """ このひな形の形式はSettings>Tools>Pyth…

Pythonでlicenseという名前の変数に警告が出る理由

AI

globalな変数と名前が被ってるよという警告が出て、なんだこれと思ったら site moduleにlicenseという関数が定義されているらしい。 もっとGlobalな名前空間を汚染しないよう気を遣ってほしいなぁ。。 参考: stackoverflow.com

画像認識の結果を画像に重ねて表示する

AI

例えば、物体検出などのタスクではどこにどんな物体があると検出したかを可視化するために、赤枠を画像に重ねることが多い。 画像は予測のインプットにするためにndarrayにされていることが多いので、以下のようにndarrayをImageオブジェクトに変換し、それ…

PyCharmでmatplotlibを使って図を表示出来ない

AI

なぜだ。。 ここを見るとScientificModeなら表示されそうに書いてるのに。。ScientificModeにしてるのに。。 pleiades.io 以下を参考に plt.interactive(False) や plt.show(block=True) もやってみたがだめだった。 stackoverflow.com

KerasのモデルをS3に保存する

AI

pickleで保存しようとすると「TypeError: can't pickle _thread.lock objects」エラーになる。 正しくは、model.to_json()をよんでJSON形式にしてから保存する。 詳細は以下参照。 stackoverflow.com

Kerasでモデルを作ると「AttributeError: 'Node' object has no attribute 'output_masks'」エラー

AI

原因はTensor flowに取り込まれているKerasと素のKerasを両方使っていることだった。 実は互換性ないらしい。 DenseクラスなどすべてのクラスをTensor flowの中で定義されているものに置き換えると直った。 参考: github.com

SSHを3段にし、さらにポートフォワーディングもする方法

IT

なんで2つも踏み台噛まさないといけないのか。。と思いつつ設定した。 .ssh/configに以下を記載する。 HOST humidai1 HostName xxx.xxx.xxx.xxx User xxx Port 22 GatewayPorts yes LocalForward 3111 localhost:3111 HOST humidai2 HostName xxx.xxx.xxx.xx…

AWSでスポットリクエストを作成すると「Parameter: SpotFleetRequestConfig.IamFleetRole is invalid.」エラー

AI

この問題は以下の記事でも取り上げたが、解消方法が分かったので再度記載。 anton0825.hatenablog.com 自分のユーザが所属しているIAMグループに「AmazonEC2SpotFleetRole」ポリシーをアタッチすると直った。 参考: qiita.com

Numpyのndarray同士で演算すると「MemoryError」

AI

メモリは足りてるのになぜ。。と思ったら、ndarrayのshapeが違っていたためだった。 Px = norm.cdf(X_val_age + 1, mean, std) - norm.cdf(X_val_age, mean, std) _jmeasure = predicted_proba * Px 上記のコードでMemoryErrorが発生した。 predicted_proba.…

多角形で画像のAnnotationをする時はlabelmeが良さそう

AI

探した中ではlabelmeが一番やりたいことにマッチしていた。やりたいことは以下。 作業者は社内の数人(作業の進捗管理や外部の人の管理機能は不要) 多角形でAnnotationを付けられる 参考: github.com

S3にPythonのオブジェクトを保存したり読み込んだりするコード

AI

意外と手こずったのでコードを貼っておく。 import io, pickle, boto3 BUCKET = "バケット名" def upload_to_s3(file, content): s3 = boto3.resource('s3') s3.Bucket(BUCKET).put_object(Key=file, Body=content) def upload_object_to_s3(file, obj): pic…

pickle.loadを実行すると「UnpicklingError: could not find MARK」エラー

AI

原因はテキストファイルをpickle.loadでオブジェクトに変換しようとしていたことだった。 そりゃpickleでシリアライズしたデータしか読み込めないよね。。 読み込むファイルをpickle.dumpで書き出したファイルにしたら直った。