Python3関連のことを調べてみた2020年07月09日

Python3関連のことを調べてみた2020年07月09日

【PyTorch】自作関数の勾配計算式(backward関数)の書き方② 〜多変数出力の場合〜

# はじめに
前回の[【PyTorch】自作関数の勾配計算式(backward関数)の書き方①](https://qiita.com/windfall/items/073cbb4ffdfab356e495)の続きです.前記事では1次元入力1次元出力の関数の勾配計算式(`backward()`関数)の書き方をまとめました.本記事ではさらに拡張して多変数入出力の場合に,どのように勾配計算を定義するかについてまとめます.

# 勾配計算の書き方の復習(1次元入出力の場合)

– 自作関数はtorch.autograd.Functionクラスを継承する必要があります.
– メンバ関数にはforward()とbackward()を用意します.ここで大事なのはそれぞれの関数の第一引数ctxでなければならない,ということです.ctxはコンテキストのことであり,勾配計算に必要な順伝播時の情報を保持します.
– `backward()`関数のゴール(返り値)は入力の勾配です.よりわかりやすく言うと,この勾配とは$\frac{dL}{dx}$になります.
– `backward()`関数は引数として出力の

元記事を表示

Djangoで既存のモデルに後からDateFieldを用いた項目を追加するときの注意点

#はじめに
開発中、後から既存のモデルに項目を追加する時に少し操作が必要であることを知ったのでその知見についてまとめました。

#既存モデル

まずは簡単のために以下のような単純なモデルがあることを想定します。

“`Python
class NameModel(models.Model):
name = models.CharField(max_length=50)

def __str__(self):
return self.name
“`

ここに`DateField()`を用いた項目を追加することを考えます。

#項目追加

以下のように項目を追加します。

“`Python
class NameModel(models.Model):
name = models.CharField(max_length=50)
date = models.DateField() #追加

def __str__(self):
return self.name
“`

モデルを変更したのでマイグレーションします。

元記事を表示

ゼロから始めるLeetCode Day80「703. Kth Largest Element in a Stream」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

Google Cloud Functionsのログ出力(とハマったこと)

# やりたいこと
– 言語:Python
– Google Cloud FunctionsでStack Driver Loggingにログを出力したい。
– ドキュメントを見ると `print` でやれって書いてある
– https://cloud.google.com/functions/docs/monitoring/logging?hl=ja#functions-log-helloworld-python
– とはいえログレベルは設定したい

# やったこと
– google-cloud-loggingを使う
– requirements.txtに `google-cloud-logging==1.14.0` を追記

“`python
# Imports the Google Cloud client library
import logging
from google.cloud import logging as glogging

client = glogging.Client(project=os.environ[‘PROJECT_ID’])
handler

元記事を表示

Kindleの自動スクショ保存プログラム

# 初めに
Kindle本を購入したけどアカウントが消えて今までの本が見れなくなった、、
保存しておけばよかった、、
となったので、Kindle本を保存しておくためのプログラムを作成しました。

MacにおけるKindleAppの、全ページの画面のスクリーンショットを自動で撮ることを目的としています。

# 使用方法

プログラムをインストールしましょう。

“`
git clone https://github.com/yassyyuki/save_kindle_book.git
“`
インストールできない方は、以下のコードをコピペして、`save_kindle_screen.py`ファイルを作成してペーストしましょう。

“`py
import pyautogui
import time
import os
import datetime

# ページ数
page = 5
# スクショ間隔(秒)
span = 1
# 出力フォルダ頭文字
h_foldername = “output”
# 出力ファイル頭文字
h_filename = “picture”

# 5秒の間に

元記事を表示

Python 標準入力 まとめ

**Python3で外部からの入力値を扱うときのメモ**
キーボード入力値や、Paiza などのスキルチェックでの入力値を取得する方法を初心者なりにまとめてみた

#1 基本

入力値を読み取るには `input()` 関数を使う。
`input()`のカッコ内に文字列を入力すれば、その文字列がキー入力待機中に表示される
  例) スクリーンショット 2020-07-08 11.15.34.png

読み取れるのは(スペースなども含めた)一行のみの入力
→ 競プロなどで複数行入力されるときは、一行ごと(上から順に)に読み取る必要㊒

>a
>12
>abcd ef

が与えられたときは、

“`Python:
A = input()
B = input()
C = input()

print(A) #出

元記事を表示

【TensorflowLite】MobileNet V2 SSD の結果をいい感じに取出す

TensorflowLiteでObjectDetectionして結果を取り出す流れをPythonで実装していきます。
インプット画像の作成(変換)や出力の取り出しの記事が少ない気がしますので、その部分を重点的に書いていこうと思います。
モデルはSSDを使います。

## モデルのダウンロード
https://coral.ai/models/ からMobileNet SSD v2 (COCO)をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491627/ee91b35a-882c-5e1a-bd94-a31f759e4fcc.png)

## モデルをインポート
“`python:
# TensorFlowのセットアップ
tflite_interpreter_quant = tf.lite.Interpreter(“mobilenet_ssd_v2_coco.tflite”)

# TnsorFlowの準備
input_details = tflite_interp

元記事を表示

PythonでAtCoder

#AtCoderでの使用言語をPythonに変更
先日AtCoderでの使用言語をC++からPythonに変更しました。
Pythonは初心者であるため仕様を忘れた際に自分で参照するためのメモを作成しました。
自分用なので説明などないですが公開したいと思います。

#標準入力

intで入力する場合

“`python:a.py
a=int(input())
“`

int行列リストで取得

“`
n, m, k=map(int, input().split())
a=list(map(int, input().split()))
“`

“`
#入力
#B1 C1
#B2 C2
#⋮
#BQ CQ

bc=[]
for _ in range(q):
a, b=map(int, input().split())
bc.append((a, b))
“`

文字列

“`python
s=input()
“`

#標準出力

リストを空白区切りで出力

“`python
ans = [elem ^ 2 for elem in A]
print(* ans

元記事を表示

jupyter notebookをリモート(非LAN環境)で利用

## やりたいこと
自宅のPCから高性能GPU搭載サーバ上(非LAN環境)でJupyter Notebookを起動し、プログラムの実装、実行したい。

## 本文における想定環境
下図のような環境を想定する。GPUサーバは踏み台サーバからしかアクセスできない。
![jupyter-server.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287300/7cbaa917-dbd6-0e9b-9af3-0803b07e8cd6.png)

## 環境
### 手元のPCの環境
– Mac OS Catalina 10.15.4
– Google Chrome 83.0.4103.116
– Proxy Switchy Omega 2.5.21
– Safari 13.1

### GPUサーバの環境
– Ubuntu 18.04 LTS
– Python 3.6.8
– pip 20.0.2

## GPUサーバでの設定
まず、GPUサーバにjupyter notebookをインストールする。

“`z

元記事を表示

【Python】dict in listやinstance in listをsortする方法

listのソートはよくありますが、ここではdict in listやinstance in listをsortする方法を書き留めます。
sortは全て昇順とします。
sortで使用するのは組み込み関数の`sorted`です。

## 動作確認済みのPythonバージョン

– 3.7
– 3.8

標準ライブラリdataclassesを使用しなければ3.6とかでも動くはずです

# dict in list

dict in listの場合はsorted関数のkey引数を指定してあげる必要があります。
keyを指定する時にlambda使って無名関数で`lambda x: x[‘a’]`でもいいですが、公式によると標準ライブラリoperatorのitemgetterを使用した方が高速らしいです(検証していないのでなんとも言えませんが)。

https://docs.python.org/ja/3/howto/sorting.html#operator-module-functions
> Python は高速で扱いやすいアクセサ関数を提供しています。 operator モジュールには i

元記事を表示

pytube3を使って、youtubeの動画をダウンロードする方法

## 環境
OS: mac os x 10.15.5
python: 3.8.0
pythonバージョン管理: pyenv

## pytube3とは
[pytube](https://github.com/nficano/pytube)はyoutubeの動画をインストールするpythonライブラリです。
googleさんは[youtube Data API](https://developers.google.com/youtube/v3/getting-started?hl=ja)を公開しておりますので、ビジネスなどでyoutubeの動画のダウンロード機能を使う場合は、pytubeは使わないことをおすすめします。

pytubeはあくまで、私的で非営利な活動で、過度なリクエストを送らない程度にお使いください。

## pytube3をインストール
python3 をお使いの場合は、pytube3をインストールしてください。

“`
pip install pytube3
“`

python2 をお使いの場合は、pytubeをインストールしてください。

“`bash

p

元記事を表示

jupyter notebook でコマンドを実行する方法

jupyter notebookでコマンドを実行するには先頭に`!`をつけることでできます。

“`
!ls

!pwd
“`

google の[colab](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)でも同じように実行できるので、画像の転送し、画像の有無など`!ls`で確認できます。

元記事を表示

Mac OSにpyenvをHomebrewを使ってインストールしたけど、pythonのバージョンが切り替わらないときの対処法

## 問題
mac osでHomebrew(パッケージ管理ツール)を使って、pyenvをインストールし、pythonのバージョンをglobalに設定してみたけど、pythonのバージョンが切り替わらない。

“`shell

$ brew install pyenv # pyenvのインストール
$ pyenv install 3.8.0 # pythonのバージョンのインストール
$ pyenv global 3.8.0 # pythonのバージョンをglobalに設定
$ python -V # バージョンを確認
2.7.7 # デフォルトのバージョンと変わらない問題

“`

## 解決法
ホームディレクトリの`.bash_profile`または`.zshrc`にeval “$(pyenv init -)”を加え、`source`コマンドで適応させる

“`
$ vim .zshrc
$ source .zshrc
“`

元記事を表示

Kaggle~住宅分析③~Part1

# 1. はじめに
住宅分析もかれこれ3回目になりました。
前回までスコアが0.17付近でモデルを変えてもこれ以上伸びないなーといった感じ。

今回はCRISP-DMを用いた標準プロセスで実施。
※Shearerらが提唱しているCRISP-DM(CRoss Industry Standard Process for Data Mining)

データ分析のプロセスには、標準プロセスとしてCRISP-DMとCRIISP-DMよりデータ分析部分にフォーカスしているKDDがあります(今回はKDDの説明は省略)

CRISP-DMのプロセスは①ビジネス理解→②データ理解→③データ準備→④モデリング→⑤評価→⑥適用というふうに進んでいく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621150/b7e3e150-16c3-ebce-88d2-1e3e0a15fcf3.png)
                  図1 CRISP-DM

といった流れで進め、なおかつこれらについて自分の考えたこ

元記事を表示

EC2のGPU環境でtensorflow動かしたメモ

機械学習の勉強でTensorflowをCPU環境で動かしていたけど、GPU環境で動かすとどれくらい変わるのか確かめたかった、程度だけど思ったより色々とハードルがあったので今後のためのメモ

### GCPで挫折

初期登録時に無料枠があったので、最初にGCPを試した。
CPUインスタンスでサンプルが動いたのでGPUインスタンスを立ち上げようとしたら
`Quota ‘GPUS_ALL_REGIONS’ exceeded. Limit: 0.0 globally`
とお断りされた

[ここ](https://stackoverflow.com/questions/53415180/gcp-error-quota-gpus-all-regions-exceeded-limit-0-0-globally)を見るとリソースの割り当てを要求しないといけないらしい
ということで、GPU1個要求したら

“`
Unfortunately, we are unable to grant you additional quota at this time. If
this is a new proj

元記事を表示

ゼロから始めるLeetCode Day79「1282. Group the People Given the Group Size They Belong To」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

PyCaret2.0 (pycaret-nightly)を試してみた

# はじめに
* PyCaret2.0が、Nightlyビルド版で公開されており、試してみました。
* PyCaret自体については、以前投稿させて頂いた下記もご確認ください。
* [low-code機械学習ライブラリ「PyCaret」でモデルを可視化してみた](https://qiita.com/shnchr/items/bdd4810b3477aa977413)
* v2では下記のように、不均衡データに対しての前処理が追加されているようなので、試してみたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/7f06bf3d-5b21-adc5-7a87-99a0a5765273.png)

# 試し方
* pipしてください。

“`shell
pip install pycaret-nightly
“`

* pipすると、version 2.0.0を試すことができます。

![image.png](https://qiita-image-store

元記事を表示

Python と selenium でAmazonの購入履歴を取得する

# この記事の内容
Amazonの購入履歴から、領収書をすべてpdf化し、ファイル名を注文番号にして指定したフォルダに保存するという作業をPythonとseleniumによって実現します。
プログラミングをやり始めて3か月なので上手くないところもあるかもしれませんが、備忘を兼ねて記事を残します。

### 目次
1.この記事を書くに至った経緯
2.実装内容の概要
3.実装
 3.0.環境
 3.1.コード全体
 3.2.Selnium のインストール
 3.3.パッケージインストール
 3.4.初期設定
 3.5.ログイン・注文履歴画面へ
 3.6.1ページ内の領収書リンクを取得、領収書内へ
 3.7.領収書をpdf保存し指定のフォルダに名前を変更して保存
 3.8.次のページへ
4.追加の機能追加について
5.saleceforceでの固有の論点
 5.1.二段階認証の突破
 5.2.画面には確かに存在する要素がdriver.find_elementsで取得できない場合->iframeを疑う
 5.3.無限スクロールを読み込む
6.最後に

# 1. この記事を書くに至った背景
先日

元記事を表示

DataFrameで’nan’が消えてしまうのを直す。

CSVの段階で”nan”という文字列を利用していたのに、DataFrameに入れたときに勝手に’NaN’になってしまうので困った。
もう一度”nan”を利用するためには、`fillna(‘nan’)`を使うことで解決。
まぁ空の部分も’nan’になるんですけど

“`Python
import math
import numpy as np
import pandas as pd
# データの作成
data = [
[”, 1, ‘2’, 3], #
[math.nan, np.nan, pd.np.nan, ‘np.nan’],
[None, None, ‘nan’, ‘nan’]
]
df = pd.DataFrame(data)
df.to_csv(‘test.csv’)

# CSVにある’nan’を読み込むとNaNになる
df = pd.read_csv(‘test.csv’)
print(df)
# 0 1 2 3
# 0 NaN 1.0 2.0 3
# 1 NaN NaN NaN np.na

元記事を表示

C系プログラマが始めるPython

#Pythonを勉強することになったきっかけ
前々から話題になっており触りたいと思っていたまま、時が過ぎてました…
つい最近、Python触れる子が周りにいたり、企業の人にも他の言語にも触れてみたらとアドバイスをもらったりしたので勉強するモチベが高くなったって感じです。

#余談
この画像は[ちょまど](https://twitter.com/chomado?s=20)さんが描かれたものです。Pythonちゃん可愛いですよね!
![pythonChan] (https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647793/2bd0d071-820c-0d07-ed79-424aa2d449cb.png)

#この記事を読む前に
投稿主は**C/C++**、**Java**、**C#**をすでに触っているため、そういったC系の言語と比較した視点で記事を書いていくので予めご了承ください。

#お〇ぱいそんを触りたい
ド下ネタな見出しですみません。ただ言いたいだけです。
ここから具体的なPythonの基本文法についてまと

元記事を表示

OTHERカテゴリの最新記事