- 0.0.1. python pathlibの使い方メモ
- 0.0.2. python全角⇔半角文字列変換
- 0.0.3. 【Signate】「The 4th Tellus Satellite Challenge:海岸線の抽出」で試した手法
- 0.0.4. OpenCVをAWS Lambda + Python + Serverless Frameworkで動かす
- 0.0.5. keyとvalueについて-media_url取得までの流れ
- 0.0.6. [競プロ用]拡張ダイクストラ、その他ダイクストラ応用まとめ
- 0.0.7. 【optimizer入門】パラメーターを変化させて可視化してみる♬
- 0.0.8. 自然言語処理のサンプルデータセットを簡単に取り扱えるライブラリdatasetsの紹介
- 0.0.9. Python3.9でのPygame Zeroインストール
- 0.0.10. pandasのread_csvでUnicodeDecodeErrorした際の対処法まとめ
- 0.0.11. pytorch3d で python から 3D モデルを表示する
- 0.0.12. 【Python】読込むブック名とセルの値をパラメーターにする。④
- 0.0.13. 【Optuna】ハイパーパラメータの自動最適化ライブラリの使い方例
- 0.0.14. DjangoとReact redux TypeScriptを使ってオリジナルアプリを作ってみました(TwitterAPI)その4
- 0.0.15. No module named
- 0.0.16. 【Tips】Google Colabolatory の Drive 連携でカレントディレクトリを削除してしまった時の対処方法
- 0.0.17. 奇数判定
- 0.0.18. PythonでLoopをしたい
- 0.0.19. Pythonでウィンドウのタイトルから位置を取得【Windows】
- 0.0.20. 【Pytorch】RuntimeError: CUDA error: an illegal memory access was encountered
- 1. errorの内容
- 2. 原因
- 3. 解決策
- 4. 参考文献
python pathlibの使い方メモ
# 1. pathlibとは
ファイルやディレクトリを操作するpython標準パッケージです
https://docs.python.org/ja/3/library/pathlib.htmlos.pathで出来ることは大抵できます
# 2. os.pathよりも優れている点
### 2-1. 連続して操作するときに可読性が上がる
os.pathだと入れ子になって読みにくいですが、pathlibだと読みやすいです
“`python:os.pathの場合
>>> path = ‘../hoge/fuga/hoo/sample.png’
>>> os.path.dirname(os.path.dirname(os.path.dirname(path)))
‘../
python全角⇔半角文字列変換
“`python
ZEN = chr(0x3000) + “”.join(chr(0xff01 + i) for i in range(94))
HAN = “”.join(chr(0x20 + i) for i in range(95))# 全角から半角へ変換
def to_hankaku(s, tdic=str.maketrans(ZEN, HAN)):
return s.translate(tdic)# 半角から全角へ変換
def to_zenkaku(s, tdic=str.maketrans(HAN, ZEN)):
return s.translate(tdic)>>> to_hankaku(“12 3”)
’12 3′>>> to_zenkaku(“12 3”)
‘12\u30003’“`
【Signate】「The 4th Tellus Satellite Challenge:海岸線の抽出」で試した手法
# はじめに
2020年8月〜11月に開催された海岸線の抽出コンペに参加しました。結果自体は48位と振るわなかったのですが、色々な手法を試して、自分にとってはとても勉強になったので、こちらで共有したいと思います。# 参考
– [コンペティション詳細ページ](https://signate.jp/competitions/284)# 情報公開ポリシー
この記事はSignateの[情報公開ポリシー](https://signate.jp/competitions/284#disclosure-policy)に従って公開しています。# コンペ概要
本コンペの目的は「SAR データを用いた海岸線の抽出」です。海岸線を含む画像に対し、陸地と海の境界となる線を引くことを目的とします。OpenCVをAWS Lambda + Python + Serverless Frameworkで動かす
OpenCVをAWS Lambda + Python + Serverless Frameworkで動かしてみました。
先日、[PillowをLambdaで動かす](https://suzuki-navi.hatenablog.com/entry/2021/02/02/163647)記事を書きましたが、このときと違って、OpenCVはyumでインストールの必要なshared objectに依存しているのでだいぶ面倒でした。
# 手順概要
1. serverless-python-requirements インストール
2. Pythonサンプルコードを記述
3. requirements.txt と serverless.yml と Dockerfile にOpenCV動作に必要な事項を記述
4. あとはデプロイOpenCV特有は3のみです。
# 手順詳細
## serverless-python-requirements インストール
AWS Lambda + Python + Serverless FrameworkにPythonのパッケージをインストールする方法
keyとvalueについて-media_url取得までの流れ
#型について
“`
#terminal上で取得している
{‘data’: [{‘id’: ‘1234567890’, ‘media_type’: ‘IMAGE’,
‘media_url’:’https://test.com/’,
‘timestamp’: ‘2021********’, ‘username’: ‘qiita’}],
‘paging’: {‘cursors’: {‘before’: ‘abcd’, ‘after’: ‘abcd’}}}
“`
このdataは辞書型{}とリスト型[]が存在している。
今回は仮定として変数を profile_data ということにする。#最初に’data’を取得してみる
“`
>>>profile_data[‘data’]
[{‘id’: ‘1234567890’, ‘media_type’: ‘IMAGE’, ‘media_url’:’https://test.com/’,
‘timestamp’: ‘2021********’, ‘username’: ‘qiita’}]
“`
commandでprofile_data
[競プロ用]拡張ダイクストラ、その他ダイクストラ応用まとめ
# ダイクストラの応用問題達
## 1. 頂点倍加(所謂拡張ダイクストラ)
ダイクストラでは複数の状態を同時に扱うことができない。
例えば、町を移動する時にかかる時間と料金を同時に考慮しながら最短経路を求めることができない。
そこで、同じ町にいても所持金が違う場合(状態が違う場合)を異なる頂点と見なして頂点を増やすことで対応する。単純に頂点を増やしていくとTLEするので、それ以上探索する必要のないステートがないかを探して上限を決める。
この解説がしっくりきた。
1. [ABC164 E – Two Currencies](https://atcoder.jp/contests/abc164/tasks/abc164_e)
2. [いろはちゃんコンテスト Day2 G – 通学路](https://atcoder.jp/contests/iroha2019-day2/tasks/iroha2019_day2_g)
3. [AOJ Highway Express Bus
【optimizer入門】パラメーターを変化させて可視化してみる♬
今回は、optimizerと言えば、ほぼadam一択だったけど、実は性質はいろいろというのを実感したので、まとめておく。
これをやろうと思ったのは、参考の記事を読んでなるほどと思うと同時にいくつかの疑問がおきたのでやってみました。
【参考】
①[【前編】Pytorchの様々な最適化手法(torch.optim.Optimizer)の更新過程や性能を比較検証してみた!](https://rightcode.co.jp/blog/information-technology/torch-optim-optimizer-compare-and-verify-update-process-and-performance-of-optimization-methods)
###やったこと
・基本的な動作
・疑問
・詳細に見る
・自前optimizer
###・基本的な動作
以下の表は、上記の参考①と以下の参考②を参考に作成しています。
・【参考】
②[確率的勾配降下法](https://ja.wikipedia.org/wiki/%E7%A2%BA%E7%8E%87%E7%9A%84%E5%8B
自然言語処理のサンプルデータセットを簡単に取り扱えるライブラリdatasetsの紹介
# はじめに
huggingfaceから、自然言語処理をする上でのサンプルデータを簡単に取り扱える`datasets`というライブラリがあることを今更知ったので、簡単な使い方のメモを残しておきます。公式のページはこちら(まぁこちらのUsageに使い方かいてあるんですけどね…)
– https://github.com/huggingface/datasets
Quick tourもあります
– https://huggingface.co/docs/datasets/quicktour.html
# 使い方
`pip`でインストールできます。
“`
pip install datasets
“``datasets`で公開されているデータセットは`datasets.list_datasets()`で確認できます。
本記事の投稿現在(2021年2月24日)では680件のデータセットが公開されているようです。“`python
import datasets
# 公開されているデータセット一覧
print(datasets.list_datasets()[:1
Python3.9でのPygame Zeroインストール
最新のPython 3.9.2でPygame Zeroをインストール( pip install pgzero )したところエラーになった。
“`
ERROR: Command errored out with exit status 1:
“`これはPygameの1.9.6がインストールできないため。Pygameの2.0.0を入れて、Pygame Zeroを依存関係無しでインストールするとうまくいく。
“`
pip install pygame==2.0.0
pip install pgzero –no-deps
“`なお、ダウンロードしたPygameのキャッシュが残っている場合にはうまくいかないので、まずキャッシュをクリアする。
“`
pip cache purge
“`
pandasのread_csvでUnicodeDecodeErrorした際の対処法まとめ
pandasではデフォルトでutf-8のcsvを読み込むことになっているために起こるエラー。
## encoding:元ファイルの文字コードを指定するパターン
read_csvに対して、encoding=’shift_jis’などのオプションを付与。
特にwindows環境下で作られたcsv(Excelで作成したものなど)は、shift_jisやcp932を指定することで解決する事がある。
参考:https://insilico-notebook.com/python-unicodedecodeerror/
(↑のサイトにはpythonが標準でサポートする日本語文字コードの一覧がある。)本来はこれで解決するはずだが、解決しないことが多い。原因不明。
“`python
import pandas as pd
df = pd.read_csv(‘data.csv’, encoding=’shift_jis’)
“`## engine:エンコーディングをpythonで行う
read_csvに対して、engine=”python”オプションを付与する方法。
https://p
pytorch3d で python から 3D モデルを表示する
pytorch3d で python から 3D モデルを表示します。
こんな感じで python から 3D モデルの表示を行うことができます(おそらく最適化もできるのかと)
![Eu9TE9vVcAoQOfB.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115935/282b8872-658b-8103-4fc6-3c25e28d88fc.jpeg)
###インストール方法
まずは pytorch3d のインストールを行います。環境は Ubuntu になります。““bash
!pip install torch torchvision ;
!pip install ‘git+https://github.com/facebookresearch/pytorch3d.git@stable’ ;
““もし pip のバージョンをアップグレードしてくださいっと言われたら下記コマンドで対応します。
““bash
/usr/bin/python3 -m pip install —
【Python】読込むブック名とセルの値をパラメーターにする。④
pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、パラメーターに関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。後々レイアウトを変更したり、プログラムで読み込むブック名やセルの値を変えてしまうかもしれない時の対処法です。
なんだかちょっと実戦形式っぽくてワクワクしてます。今回はこちらのブック「日報.xlsx」を、使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927441/bbc57acb-3d52-bacc-6512-533a4f62f4bf.png)# configparserモジュール
事前に設定ファイルにパラメーターを記述しておき、後から呼び出す方法です。私はVScodeを使って作成しています。ファイルの文字コードは「UTF=8」です。
“`ini:sample.ini
[DEFAULT]
filename = 日報.xlsx
cellno = I1
`
【Optuna】ハイパーパラメータの自動最適化ライブラリの使い方例
# Optuna概要
– PFN様製のハイパーパラメータの自動最適化ライブラリです。
– DeepLearningでもsklearnでも使えます。すごく便利。
– 公式ページはこちらです。
– https://optuna.readthedocs.io/en/stable/index.html# 使い方
## 基本形
– 公式チュートリアルから転載
“`python
import optunadef objective(trial):
x = trial.suggest_float(“x”, -10, 10)
return (x – 2) ** 2study = optuna.create_study()
study.optimize(objective, n_trials=100)best_params = study.best_params
found_x = best_params[“x”]
print(“Found x: {}, (x – 2)^2: {}”.format(found_x, (found_x – 2) ** 2))
DjangoとReact redux TypeScriptを使ってオリジナルアプリを作ってみました(TwitterAPI)その4
##前回までのあらすじ
前回まででこのオリジナルアプリのバックエンド,フロントエンドの認証周り、ホーム画面を作成した。[DjangoとReact redux TypeScriptを使ってオリジナルアプリを作ってみました(TwitterAPI)その1](https://qiita.com/kenshow-blog/items/8d2768b9f4b53cdd4dfd)
[DjangoとReact redux TypeScriptを使ってオリジナルアプリを作ってみました(TwitterAPI)その2](https://qiita.com/kenshow-blog/items/2e1501c3d86d66b16f97)
[DjangoとReact redux TypeScriptを使ってオリジナルアプリを作ってみました(TwitterAPI)その3]
(https://qiita.com/kenshow-blog/items/7ecbd85e00a7e1f0bc75)git↓
https://github.com/kenshow-blog/twitter今回はついにフロントエ
No module named
# 事象 : No module named ikp3db
テンプレートしかないLambda関数をCloud9で実行したらなんか言われた“`bash
/home/ec2-user/.pyenv/versions/3.8.7/bin/python3: No module named ikp3dbTo use python debugger install ikpdb by running:
sudo yum update;
sudo yum install python36-devel;
sudo pip-3.6 install ikp3db;Process exited with code: 0
“`## 原因 : Cloud9のデバックにはikp3dbが必要だから
[そういえば似たようなことが以前あったなぁ](https://ponsuke-tarou.hatenablog.com/entry/2020/12/07/155550#%E5%8E%9F%E5%9B%A0–%E4%B8%8D
【Tips】Google Colabolatory の Drive 連携でカレントディレクトリを削除してしまった時の対処方法
# 問題:Drive側からのカレントディレクトリの削除
[Google Drive と連携した Colaboratory](https://qiita.com/asakuraTsukazaki/items/e7eb1f0c43be1e0231c6) において、現在いるディレクトリを Google Drive 側から削除すると、シェル関連のコマンドが「No such file or directory」で動かなくなってしまう。“`sh
!mkdir drive/’My Drive’/phantom
%cd drive/’My Drive’/phantom
“`
この状態で`phantom`ディレクトリを Google Drive の GUI 上で削除すると、以下のようなエラーが出るようになる。“`sh
!pwd
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
pwd: error retrie
奇数判定
奇数判定のシンプルな書き方を知らなかったので。
“`python
def in_odd(value):
if value % 2 == 1:
return True
return False
“`“`python
list = [ 0,1,2,3,4,5,6,7,8,9 ]
“`“`python
for item in filter(in_odd,list):
print(item)
“`今知った。
[独り言](https://youtu.be/KOAimkg1p20?t=1079)ありがとう。
PythonでLoopをしたい
よく使い方を調べるので、今後のためにまとめてみようというメモ。
loopしたい対象:`list`, `dict`
“`py
listA = [1, 2, 3, 4, 5]
dictA = {‘a1’: 1, ‘a2’:2, ‘a3’:3, ‘a4’: 4, ‘a5’: 5}
“`## 普通 for…in…
### list
“`pyfor item in listA:
print(item)# output:
# 1
# 2
# 3
# 4
# 5
“`
`list`の場合、値をそのまま出力できる。### dict
“`pyfor item in dictA:
print(item)# output:
# a1
# a2
# a3
# a4
# a5
“`
`dict`の場合、**key**の部分だけを出力される。
1, 2, 3, 4, 5数字を出力したいなら、`values()`関数を使う。“`py
for item in dictA.values():
print(item)# output:
# 1
#
Pythonでウィンドウのタイトルから位置を取得【Windows】
# なぜ書いたか
Pythonでマウスクリックしたい!アプリが起動しているのか?起動しているならどこにあるのか?
[PyAutoGUI](https://pyautogui.readthedocs.io/en/latest/)や、[PyWinAuto](https://pywinauto.readthedocs.io/en/latest/)、 [Windows App Driver](https://github.com/microsoft/WinAppDriver)など試したが、どれも欠点が目立ち上手くいきませんでした。個人的に最適と思った答えを見つけたので、幸せを共有しようと思いました。
みんなで自動化してサボりましょう。# 既存ライブラリの未熟なところ
これらの欠点から、ウィンドウ操作系は独自実装として、PyAutoGUIでできない部分を補う使い方にしました。
独自実装した部分はそのうちプルリクしようと思っています。– [PyAutoGUI](https://pyautogui.readthedocs.io/en/latest/) / [Sikulix](https
【Pytorch】RuntimeError: CUDA error: an illegal memory access was encountered
errorの内容
pytorchでCrossEntropyLossをlossの計算に使った場合errorが出る。
“`
RuntimeError: CUDA error: an illegal memory access was encountered
“`原因
pytorchのimplementationミスだそうです。
labelが[0 ~ NUM_CLASS-1]の範囲を超える事によるerror
今回はクラスに分類されない物体を255と設定していたのでエラーとなりました。解決策
・labelを[0 ~ NUM_CLASS-1]の中で設定する
or
・pytorch 1.5.1以上にupdateする
参考文献
https://discuss.pytorch.org/t/i-get-runtimeerror-cuda-error-an-illegal-memory-access-was-encountered/88118