urlからとってきた画像をjupyterに表示する
import io import urllib import matplotlib.pyplot as plt from PIL import Image def display_images(urls): plt.figure() for i, url in enumerate(urls): plt.subplot(1, 5, i+1) # 適宜表示したい数にあわせて調整 image = Image.open(io.BytesIO(requests.get(cdn_format.format(url).content)) plt.imshow(image)
rect(top, left, bottom, right)からIoU計算する
IoUとは: Intersection over Union (IoU) for object detection - PyImageSearch
import numpy as np from sklearn.metrics import jaccard_score N = 100 # 精度 # rect: top, left, bottom, right (0~1, float) def rect_to_array(rect): top, left, bottom, right = (np.array(rect) * N).astype(int) box = np.pad(np.ones((bottom - top, right - left)), ((top, N - bottom), (left, N - right))) return box def iou(true, pred): true_array = rect_to_array(true) pred_array = rect_to_array(pred) return jaccard_score(true_array.flatten(), pred_array.flatten()) print (iou((0.5,0.5,1,1), (0,0, 0.8, 0.8))) # 0.1125
saved_modelのグラフの中身がどうなってるかを確認する
1. ログにグラフ情報を書き出す
import tensorflow as tf log_dir = "/tmp/tf-log/" graph = tf.Graph() with tf.Session(graph=graph) as session: loaded = tf.saved_model.load( session, {'serve'}, ここにsaved_modelのpath ) train_writer = tf.summary.FileWriter(log_dir) train_writer.add_graph(session.graph)
2. tensorboardで見る
tensorboard --logdir /tmp/tf-log
追記(2020/05/04): netronつかったらguiでグラフ構造確認できるわ...
github.com
Docker/kubernetes関連本メモ
これ読みながらのメモ
- 作者: 山田明憲
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
alias:
- k: kubectl
Dockerコンテナのdeploy
- --nameは本番環境では使わない
-
docker image prune
- 現時点で使ってないimageの削除
docker container stats [container id]
- container を top する
docker-compose
--build
option で毎回ビルドvolumes
- local:dest
container-name
で名前つけれる
実用的なコンテナ構築とデプロイ
- データはData Volumeコンテナに持たせる
- busybox
- data volumeとかに使われる最小限の軽量OS
- --volume-from [volume container name]
- volumeが共有される
local(Docker for Mac)でkubenetes
- kubenetesのpreferenceからkubenetesを起動
- kubectxコマンドで確認すると
docker-for-desktop
というクラスタができている
training
k proxy
でpodたちと通信できるproxyが立ち上がるk exec -it POD COMMAND -c CONTAINER
で実行中のコンテナに入る
deploy
k rollout history deploy DEPLOY
でdeployのhistoryが見えれる。(--recordつけてapplyしたdeploymentの)k rollout history deployment DEPLOY
でrollback
service (svc)
- cluster内のserviceは
Service名.Namespace名.svc.local
で名前解決できる - ClusterIP Service(default): 内部IPアドレスにserviceを公開できる
- NodePort Service: 各ノード上からServiceポートに接続するためのglobalなportを空ける
- LoadBalancer Service: クラウドで提供されているロードバランサと連携する
- ExternalName Service: kuberenetesから外部ホストを解決するためのえい
golangのコードに手を加えるときのメモ
依存パッケージのインストール
Gopkg.tomlがあるとき: dep ensure -vendor-only
基本操作
- mapアクセス: https://go-tour-jp.appspot.com/moretypes/22
- インスタンスメソッド: https://go-tour-jp.appspot.com/methods/1
いつも使うkubectlのコマンド
切り替え
- 使ったことあるクラスタ一覧:
kubectx
クラスタ切り替え
kubectx <NAME>
使ったことあるnamespace:
kubens
- namespace切り替え:
kubens <NAME>
※ brew install kubectx
でkubectxとkubensが入る (ahmetb/kubectx: Fast way to switch between clusters and namespaces in kubectl)
よく使うやつ
- pod一覧
k get pods --sort-by=.metadata.creationTimestamp
alias: kubectl -> k
関数の引数を固定した関数を作る
functools.partialを使うと引数を固定した関数を作ることができる。
例えば以下のような引数を2つ受け取る関数args2を、functools.partialを使って1つ目の引数aを固定したargs1を作ると以下のような感じに使える。
import functools def args2(a, b): print(f"a:{a} b:{b}") args1 = functools.partial(args2, 'a') args1('b') # a:a b:b