Python関連のことを調べてみた2020年11月29日

Python関連のことを調べてみた2020年11月29日

Pythonの高速化について調べたこと

# 背景
機械学習を学び始めて、Pythonに触れて、その流れで競技プログラミング(ほぼ AtCoder)も始めました。様々な問題や解法・考え方に触れはじめる段階では、解答が TLE となってもプログラムがまずいことが大半でしたが、最近は「解法はどうも合っている。どうやってTLEを回避したらいいかわからない」という状況にしばしば遭遇してきました。Pythonあるあるだと思います。
そんな時、 Pypy をとりあえず試せとあるのを見たり、AC の方のプログラムに Numba が使われていたりしました。それぞれにいろんな注意書きがあるものの、回避の仕方がわからないこと多く、その理解の前提となる「何しているの、これ」の知識も少なかったので、色々学んだメモです。

# そもそも、Python のプログラム実行までの話を整理
Python 自体はプログラミング言語であって、インタープリタでもコンパイラでもない。Python というプログラミング言語のルールにそって、それを実行できる環境があれば良いわけです。インタープリタとして、通常は CPythonを指すことが多いようですが、当然それ以外にも

元記事を表示

Neural Network Consoleにて電源コードの断線を異常検知させてみた(その②)

#続き

[前回の記事はこちらです](https://qiita.com/naoto344/items/e3031a2c331a8a03160a)

NNCを用いて異常検知をすることができました。もう少し精度を向上させるために、畳み込みオートエンコーダーを用いた異常検知を行います。

畳み込みオートエンコーダーについては畳み込みニューラルネットワーク(CNN)の説明がわかりやすかったので、いつものNNC公式動画のリンクを載せておきます。

[Windows版チュートリアル:5分で構築するCNN (Convolutional Neural Networks)](https://www.youtube.com/watch?v=Vj7yfyiux0w&list=PLg1wtJlhfh20mWfEbfng2ug-bfE437lDW&index=3)

#実際にやってみる。
ネットワークの構成はこんな感じです。
![capture4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/902817/a0a676e1-

元記事を表示

【PyTorchチュートリアル⑨】Transfer Learning for Computer Vision Tutorial

# はじめに
[前回](https://qiita.com/sudominoru/items/bf3bd96c6921d9106742)に引き続き、PyTorch [公式チュートリアル](https://pytorch.org/tutorials/) の第9弾です。
今回は [Transfer Learning for Computer Vision Tutorial](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html) を進めます。

# Transfer Learning for Computer Vision Tutorial

このチュートリアルでは、転移学習を使用して畳み込みニューラルネットワークをトレーニングする方法を学びます。転移学習の詳細については、[cs231n notes](https://cs231n.github.io/transfer-learning/)をご覧ください。

(このチュートリアルでは、torchvision の ResNet18を利用して転移学習します。

元記事を表示

DeepLearning with Pythonを読んで得た学びを残しておく

## はじめに

[Deep Learning with Python](https://www.amazon.co.jp/Deep-Learning-Python-Francois-Chollet/dp/1617294438)のEnglish verを読んで学びがあった箇所を自分のために書き残します。

途中、**Note**とある箇所は私のメモになります。

もし私以外の誰かの参考にもなれば嬉しいです。

文章のですます調や用語の統一ができていないところが多々ありますが、私のメモだと思ってご容赦ください。

## 次元の考え方

ベクトルも次元
軸の数(ランク)も次元

## 損失関数の使い分け

– 2クラスの分類問題ではバイナリ・クロスエントロピー
– 多クラスの分類問題ではカテゴリカル・クロスエントロピー
– 回帰問題では平均二乗誤差
– シーケンス学習問題ではコネクショニスト時間的分類(CTC)

確率を出力するモデルを扱う場合、通常はクロスエントロピーが最良の選択です。クロスエントロピーは,情報伝達理論の分野における量で,確率分布間の距離を測定するものです.

元記事を表示

Tリーグのデータとベイズ統計で卓球男子選手の強さを分析してみた

# はじめに
昔から卓球、特に男子卓球が好きで、選手の強さとか分析してみたいなと思い、ベイズモデリングを使って色々と試してみました。分析にあたっては、[アヒル本の第10章にあるプロ棋士の分析](https://www.amazon.co.jp/Stan%E3%81%A8R%E3%81%A7%E3%83%99%E3%82%A4%E3%82%BA%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0-Wonderful-R-%E6%9D%BE%E6%B5%A6-%E5%81%A5%E5%A4%AA%E9%83%8E/dp/4320112423)や[テニス選手でのベイズモデリングの記事](http://www.ie110704.net/2018/05/24/%E3%83%99%E3%82%A4%E3%82%BA%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%A7%E7%94%B7%E5%AD%90%E3%83%97%E3%83%AD%E3%83%86%E3%83%8

元記事を表示

AWS障害で我が家のIoTが逝ってしまったので、稼働管理システムを作ってみた

# IoTとクラウド障害
IoT関係サービスはクラウド上にシステムが構築されている事が多く、
11月25日のAWS障害では、NatureRemoやSwitchBotなどのIoTサービスが軒並み停止してしまいました。

我が家もNatureRemoが完全停止し、「アレクサ電気消して!」を連呼しても電気が消えず、[センサデータ取得システム](https://qiita.com/c60evaporator/items/283d0569eba58830f86e)でもRemoのデータが取得できなくなる等、なかなかのダメージを受けてしまいました‥

このような**障害は早く気づけば気付けるほどダメージを最小限に抑えられる**ので、
この機に以前から作りかけだった、**稼働管理システム**を作成してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/c2e5ddab-dd8b-bbd5-8e55-0423b2e79099.png)

AWS障害時のデータに本システムを適用したところ

元記事を表示

pythonのメモ

“`python
#!/usr/bin/env python3

# YYYYMMDD Get
import datetime
today = datetime.date.today()
yyyymmdd = today.strftime(‘%Y%m%d’)
yyyymmddhhmmss = datetime.datetime.now().strftime(‘%Y%m%d%H%M%S’)

# ファイルの定義
dir = ‘/opt/script/log’
file = ‘/opt/script/log/hoge.txt’
filecopy = file + ‘-‘ + yyyymmddhhmmss
filegz = filecopy + ‘.gz’

#— Function ———————————-#
# File Copy
def func_file_copy(file, filecopy):
print(‘func_file_copy’)
import shutil
shutil.copyfile(fil

元記事を表示

[Python] *args, **kwargsって何? -引数の*(アスタリスク)-

## はじめに
以下のsample.pyのfunc()のように引数に\*args, **kwargsと書かれることがなにかと多いが何のことかを備忘録がてらまとめる。

“`python:sample.py
def func(*args, **kwargs):

return hoge
“`
まず、args, kwargsとは
– args -> arguments
– kwargs -> keyword arguments
のことである。
argumentは引数という意味であり、keywordは解説するまでもないであろう。
これらの解説の前にPythonの引数について確認をする。

## Pythonの引数について
“`python:arguments.py
def func(a, b, c, d=1, e=2, f=3):
return
“`
Pythonの関数には呼び出し時に変数を指定しなくても引数にデフォルトで値を設定する機能(アノテーション)がある。
※上の関数のd, e, fがそれに当たる

また、デフォルト値を設定する変数はデフォルト値

元記事を表示

【保存版】OpenCV Python with CUDAをAnaconda環境にインストールするレシピ

画像処理は多くの場合大規模な行列演算を実行して行われます。故に以前からOpenCVがGPU上で実行出来ればサイズの大きな画像の処理を高速化出来るのではないかと思っていました。この仮説検証は後程試すとして,まずはGPU上で実行出来るOpenCVをAnaconda上にインストールしました。その行程は気の遠くなるような行程でしたので,備忘録として残しておくことにします。(@jun0_0 の協力に感謝します)

# 構築環境
* Jupyter Notebook Server on Docker(Python3.8 with Anaconda)
* コンテナ上のゲストOS: Ubuntu 20.04 LTS
* ホストマシンのスペック
* OS: Ubuntu 18.04 LTS
* CPU: Core i9 10900K
* DRAM: 32GB
* GPU: NVIDIA Geforce RTX 2080 SUPER

# (参考) 通常版のインストール
参考までに通常版のOpenCV Pythonのインストール方法とインストールされるバージョンを記載します

元記事を表示

デコレーターによるメソッド実行時間計測 in Django

メソッドの実行時間を測定するのに、毎回メソッドの開始と終わりの時刻を計測して
差分を計算するのは手間ではないですか?

なので、**デコレーター**で実現してみました。

## デコレーター
“`python
import time
def measure_runtime(method):
def wrapper(*args, **kw):
# 始点タイム
ts = time.time()

# methodの実行
rt = method(*args, **kw)

# 終点タイム
te = time.time()

# 差分の表示
print (‘%s %2.2f ms’ % (method.__name__, (te – ts) * 1000))

return rt
return wrapper
“`

単純に、メソッドの前後でunix時間を取得して差分を表示させているだけのプログラムになります。
logに吐き出した

元記事を表示

【OpenCV】りんごを青りんごにしてみた

結果の画像は以下です。
(元画像(左)は[Pixabay](https://pixabay.com/ja/)のフリー画像を使用しました)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189978/fc602f0f-1752-32c7-0cad-f37d68df3fe6.png)

コードは以下です。
言語はPython、環境は[Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)を使用しました。

“`python
import cv2
import numpy as np

from google.colab.patches import cv2_imshow

img_path = “/path/to/image_file”
img = cv2.imread(img_path)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HS

元記事を表示

[Python]演算誤差 ARC109B

#[ARC109B](https://atcoder.jp/contests/arc109/tasks/arc109_b)

長さ n+1 の丸太を買って、短い方から丸太を作れるだけ作った後、残りの丸太を買うのが最適です。この「作れるだけ作った」ときにいくつの丸太が作れるかを求めるためには、$1 + \dots + k \leq n+1$ を満たす最大の整数 k を求めれば良いです。

私は、$1 + \dots + k = k(1+k)/2$ であることを使って、 $k(1+k)/2 \leq n+1$ を満たす最大の $k = \frac{-1+\sqrt{8n+9}}{2}$ を実装し提出しましたが、ルート演算誤差のために1ケースWAでした。本問の内容であれば、10進数の小数型Decimalを用いることで対応可能だと思われます。

“`python:サンプルコード
from decimal import Decimal

n = int(input())

k = int((-1 + Decimal(8*n+9)**Decimal(0.5))/2)

print(n-k+1

元記事を表示

OpenChemでCan’t pickleエラーが発生した時の対応メモ

#はじめに
OpenChemで掲題のエラーが発生した時の対応メモ

#環境
– PyTorch 1.7(GPU)

#エラー内容
PyTorchのGCNNのチュートリアルであるlogP_gcnn_config.pyを実行すると以下のエラーが。

“`sh

$ python launch.py –nproc_per_node=1 run.py –config_file=”./example_configs/logP_gcnn
_config.py” –mode=”train_eval” –batch_size=256 –num_epochs=100

11339 unsanitized smiles (10.8%)
warnings.warn(‘{:d}/{:d} unsanitized smiles ({:.1f}%)’.format(num_bad, len(smiles), 10

0 * invalid_rate))
C:\kimisyo\w

元記事を表示

SwaggerでREST APIを生成する

# SwaggerでREST APIを生成する

## はじめに

`macOS環境の記事ですが、Windows環境も同じ手順になります。環境依存の部分は読み替えてお試しください。`

### 目的

この記事を最後まで読むと、次のことができるようになります。

| No. | 概要 | 備考 |
| :— | :——————————– | :———– |
| 1 | Swaggerを理解する | |
| 2 | Swagger EditorでAPIを設計する | |
| 3 | Swagger CodegenでAPIを生成する | python-flask |
| 4 | Swagger UIで仕様/定義を可視化する | |
| 5 | Generated APIを検証する |

元記事を表示

Pythonのreportlabの使い方まとめ

# はじめに
この記事ではPythonから帳票等でPDFファイルを出力する際に必要になりそうな書き方をまとめた記事です。

# 開発環境
 Windows10
 Python3.7

# ライブラリのインストール
まずはreportlabをインストールしましょう。

“`
pip install reportlab
“`

# 空のPDFファイル作成
まずは空のPDFファイルをユーザのデスクトップに作成してみましょう。
下記のプログラムを実行すると空のPDFファイルがデスクトップに作成されます。

“`py
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait
import os

# ユーザのデスクトップのディレクトリを取得
file = “sample.pdf”
file_path = os.path.expanduser(“~”) + “/Desktop/” + file

# A4の新規PDFファイルを作成
page = canvas.Canvas(file

元記事を表示

concurrent.futuresのThreadPoolExecutor/ProcessPoolExecutorを試す

## 本記事でやること
100000個のファイルコピーをThreadPoolExecutor/ProcessExecutorで検証.

## 検証環境
* MacBook Pro 2017
* 2.3 GHz デュアルコアIntel Core i5
* 8 GB 2133 MHz LPDDR3
* Python 3.7.3

## とりあえず100000個のファイルを作る
ランダムなファイル名を持つファイルを./data1配下に作成.

“`create_random_file.py
import os
import random
import string

CREATE_FILES_NUM = 100000
FILE_NAME_NUM = 10
SAVE_DIR = ‘data1/’

def random_file_name(n, extension=’.txt’):
random_strs = [random.choice(string.ascii_letters + string.digits) for i in range(n)]
return ”.

元記事を表示

(xlwing使用)空白があるテキストファイル(数行)を読み込んで、excelに貼り付ける

xlwing 使用

テキストファイルの中身

“`test.txt
テスト test t3 USD 44
te 55 99 gbe 99
“`

pythonファイル

“`hello.py

def import_txt_split():

# ブックの読み込み
wb = xw.Book.caller()

# シートの読み込み
sht = wb.sheets[‘Sheet1’]

# テキストファイルの読み込み
f = open(‘test.txt’, ‘r’,encoding=’UTF-8′)

# 各行をリストで取得
datalist = f.readlines()

# 空白を取り除く
s = [i.split() for i in datalist]

# 1行ずつ、リストをペッと貼り付ける
for num,i in enumerate(s):
sht.cells(num+1,1).value = i

#

元記事を表示

MacでDjango(Python3)環境を構築してみた

#はじめに
今回は、Python/DjangoでWebアプリを作る目的で、
Macにて環境構築をしていく過程を確認していきます。

参考記事

目標
『Macにインストール済みのエディタ「VSCode」にて、
 Python3/Djangoプロジェクトを実行できる仮想環境を構築』

#1.Djangoをインストール
早速Djangoをインストールしていくのですが、
その前に、以下2点を確認します。

1.homebrewがインストールされているか
 していなければ、以下を先に確認のうえ実施していきます。

 『MacでHomebrewをインストールしてみた』
 

2.”1″が完了していたら、pipenvがインストールされているか
 していなければ、ターミナルを開き、以下のコマンドを実行

“`
$ brew install pipenv
“`
インストールが

元記事を表示

Windows10で CUDA10.2をインストール

#はじめに
Windows10にCUDAドライバを以前入れていたものの、TensorflowやPyTorchでうまく動作しなくなり、しばらくGPUなしで動かしていたが、いい加減バージョンアップしてみた。

#きっかけ
ある日PyTorchでこんなエラーが。よし、上げよう。

“`
RuntimeError: The NVIDIA driver on your system is too old (found version 10010). Please updat

e your GPU driver by downloading and installing a new version from the URL: http://www.nvidia

.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch versi

on that has been compiled with

元記事を表示

【Pandas】基礎1(DataFrame, Series)

# はじめに
機械学習や深層学習が人気の昨今、
データを加工し、前処理を行う機会が非常に多くなってきた。

データ処理方法は様々存在するが、そのデータ処理ツールの一つとしてpythonのpandasが存在する。

そこで、今回は[公式のpandasのintro記事](https://pandas.pydata.org/docs/getting_started/index.html#intro-to-pandas)を参考に
pandasの基礎にDaraFrame、Seriesについて記していく。

# そもそもPandasはどのようなデータを扱うのに適しているのか?
表形式のデータを扱うのに非常に適している。
例えば、エクセルやSQLといったデータだ。

pandasを利用することでデータの検索やデータの処理などを行うことができる。

# DataFrame
pandasが使えるデータテーブルのことである。

下の図のように、行(rows)列(columns)で構成されている。
![image.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

OTHERカテゴリの最新記事