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

Python関連のことを調べてみた2022年01月29日
目次

rinnaの日本語GPTモデルの推論時間をCPUとGPUで測ってみた

npakaさんのrinnaの日本語GPTモデルの記事を読んで、自分でも動かしてみたかったのと、GPUとCPUでどのくらい推論時間に差があるのか知りたかったので試してみました。

https://note.com/npaka/n/nb8e38763ea30?fbclid=IwAR0BSRmB4KqzmibPQ9fUWB2ivJtNsAxpoGjfxmLd1L9bpeSi8Y84z8eh3sI

# 環境の準備
Windows 11の環境なので、以前の記事に紹介しているDocker環境を使います。

https://qiita.com/kekekekenta/items/d0d64688c889b860beba

PyTorchで動くようですので、NVIDIAのnvcr.io/nvidia/pytorch:21.12-py3コンテナイメージを使います。

“`
docker run –gpus all -it -p 8888:8888 -v D:\work\rinna:/rinna nvcr.io/nvidia/pytorch:21.12-py3 bash
“`

起動したら、トーク

元記事を表示

【Python_K3D】K3Dでクラスごとに色を付けて点群データを可視化

#はじめに

点群データを処理するなかで三次元データをmatplotlibで3Dプロットするのは良く見かけるが、
立体的に見て直感的に理解したかったのでK3Dというライブラリを試してみました。

今回は室内の点群データをJupyter lab上で可視化します。

#K3Dとは
Jupyter Notebookの拡張機能で、3Dデータの可視化に用いられるライブラリです。

3Dデータをメッシュ(Mesh)や点群(Point Cloud)などでインタラクティブに可視化できます。

似たようなライブラリでplotly もありますが、
サンプル数の多いデータだとK3Dの方が動作が軽い気がします。

#実装
今回はjupyterlab上で実装していきます。

##インポート
K3dをインポートします。

“`Python
import numpy as np
import k3d
“`

##データ読み込み & プロット
可視化したいデータを読み込んで表示します。

2行目の第一引数にはプロットするデータ[x,y,z]を渡します。

“`Python
#データ読み込み
data = np.

元記事を表示

【初学者向け】pythonで型チェックしてくれるツールmypyの紹介

# mypyとは
コードを型アノテーションを付ける構文([PEP 484](https://www.python.org/dev/peps/pep-0484/))に基づき、チェックしてくれる静的解析ツールです。

# 導入のモチベーション
本記事では、プログラミング初心者向けに、pythonで型指定をするモチベーションを解説します。

早速ですが、pythonでは型を指定することはできるが、厳密な型チェックは行われない。例えば、

“`python
def f(x:int) -> int:
return x
“`
は関数fの引数xに整数が入るよと**宣言**していることになる。ただし、実際には

“`
a:int = f(1)
a #1 OK
b:int = f(“gggg”)
b #gggg 型が違うものまで通してしまう。
“`

型が違っても関数を実行してその結果を出してしまうので、実はpythonで**型指定というものは表面的なもの**に過ぎない。
本来、指定された型と違う型の引数が代入されたら(上の例でいうとbに対応)、本来そこで型が違うよ!というエラーを

元記事を表示

【Project Euler】Problem 59: XOR暗号

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 59. XOR暗号

原文 [Problem 59: XOR decryption](https://projecteuler.net/problem=59)

**問題の要約:ファイルの暗号化されたASCIIコードからXOR暗号キーとして使われた3文字を推測して復号文のASCIIコードの和を求めよ**

以下のような条件のもと暗号を解読する問題です。

* 暗号方式はa-zの小文字からなる3文字のASCIIコードを巡回してXORをとる。
* 元の文は普通の英文

考え方は「[頻度分析 (暗号)(Wikipedia)](https://ja.wikipedia.org/wiki/%E9%A0%BB%E5%BA%A6%E5%88%86%E6%9E%90_(%E6%9A%97%E5%8F%B7))」というものを使います。要

元記事を表示

【Project Euler】Problem 58: らせんの素数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 58. らせんの素数

原文 [Problem 58: Spiral primes](https://projecteuler.net/problem=58)

**問題の要約:図のように1から順番にマスにらせん状に書いて行ったとき、対角線の数が素数になる割合が10%未満になるときのマスの辺の長さを求めよ**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1922159/84fa243a-1748-5dea-3f1b-9f576bbfae3c.png)

[Problem 28: 数のらせんの対角線](https://qiita.com/masa0599/items/31d1313dbc3a2cdeca40)で同様のら

元記事を表示

【Project Euler】Problem 57: 2の平方根の収束分数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 57. 2の平方根の収束分数

原文 [Problem 57: Square root convergents](https://projecteuler.net/problem=57)

**問題の要約:2の平方根を1000番目まで連分数展開したものを分数に収束させたとき分子の桁数が分母より大きいものの数を求めよ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1922159/16f30664-a29f-6a8b-da45-e4cc38f18823.png)

要は$\sqrt{2}$の連分数展開$[1,2,2,2,2,\dots]$を分数に変換していくということですが、よく見ると以下のような漸化式が見えてきます。

元記事を表示

Blenderで、Pythonを使って頂点カラーに色を塗る

## やること

オブジェクト内の頂点の高さに応じて、色を塗ってみましょう。
ノードを使ってできそうですが、ここではPythonを使います。

## 完成物

図はスザンヌの例ですが、どんなメッシュでも同じようにできます。
頂点カラーは、一番高いところを赤に、一番低いところを青にしています。

## 手順

– オブジェクト作成
– Pythonで頂点カラー作成
– マテリアル作成

## やってみよう

最初に、スザンヌを作成してください。

※ スザンヌ以外のメッシュのオブジェクトで試すこともできます。その場合は、後述のコードの`Suzanne`を変えてください。

Sciptingワークスペースで新規作成して、下記をコピペして実行してください。

“`py
import colorsys
import bpy

ob

元記事を表示

【python】TwitterのAPI(v2)を使ってリプライに添付された画像に対して返信するbotを作ってみた(1/2 システム概要とTwitterAPIを用いた検索・ツイートまで)

# はじめに
Twitter API v2を取得したので,初心者ながら簡単なbotを作ってみました
Twitter API v1.1の情報とTwitter API v2の情報が混在しており,仕様も異なっていて結構苦戦したので自分用のメモも兼ねて情報共有します
雑だけど許してください

### botの機能
コーギーのbotです。犬の
コーギーは食いしん坊なので,食べ物の画像を与えると喜ぶし,食べ物以外の画像を与えると怒ります
それだけです
遊びで作ったものなので,存在意義はないです
URL貼っておきますので,好きにリプライ送ってみてください

# システム概要
### ユースケース
1. ユーザーがbotに画像付きのリプライを送る
2. botが画像を判別し,画像が食べ物であるかどうか判断
3. 食べ物だったらそのツイートに歓喜のリプライ,食べ物以外だったら警戒のリプライ送る

### 仕様・構成図
![Untitled Diagram.drawio.png](https://qiita-image-store

元記事を表示

WindowsコマンドプロンプトからPython実行selenium driverの警告を消す

seleinum driverを使ってブラウザ操作するPythonコードを
コマンドプロンプトから実行したときだけ
コンソールに警告(ワーニング)が大量に出ることがある。これを消す対策。

環境構築するたび忘れてしまいネット検索で探すハメになるからメモ。
動作検証済だが対策はネット記事から拾ったものである。感謝。

前提
AnacondaでインストールしたPython
pipでインストールしたseleniumのバージョンは3.141.0

環境1:
Python3.6
Windows7

モジュール内
\site-packages\selenium\webdriver\common\service.py

修正前

“`
self.process = subprocess.Popen(cmd, env=self.env,
close_fds=platform.system() != ‘Windows’,

元記事を表示

決定係数は使えないのか

## はじめに

「決定係数」は回帰モデルの性能評価指標として広く使われている指標(0~1の間の値をとり、1に近づくほど、データへのモデルの当てはまりが良いとされる)ですが、問題点として「説明変数の個数を増やすと決定係数の値が上昇する」という性質をもつことが知られています。
そして、その性質のため「決定係数は回帰モデルの性能評価指標としては使えない」と言われていますが、本記事では実験を通して「決定係数は回帰モデルの性能評価指標として機能する」ということを示していきたいと思います。

## 結論 (時間がない人向け)
+ 【結論1】 決定係数は回帰モデルの性能評価指標として機能する

+ 【結論2】
+ 「説明変数の個数を増やすと決定係数の値が上昇する」は正確な表現ではない
+ 「説明変数の個数を増やすと**トレーニングデータに対する決定係数**の値が上昇する」が正確な表現である
+ 「説明変数の個数を増やしても**テストデータに対する決定係数**の値は上昇する」とは限らない(むしろ予測に不要な変数を追加した場合は精度が下がることがほとんど)

『結論2』 + 『モデルの性能

元記事を表示

SeleniumでSlackに自動でログインする

ブラウザの操作を自動化するライブラリ「[**Selenium**](https://www.selenium.dev/documentation/)」を使って[**Slack**](https://slack.com/intl/ja-jp/)のログインを自動化するプログラムの一例です。

“`py:auto-login.py
# (Selenium 4.1.0 で動作確認済み)
# webdriver は使用しているChromeのバージョンに合わせて以下のページから取得する。
# https://chromedriver.chromium.org/downloads

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome import service as fs
import time

# parameters
slackurl

元記事を表示

AWS Lambda(Python)でmultiprocessing【Python,Lambda】

# はじめに

Lambda高速化のためのmultiprocessingを使った並列処理です。パッと使いたいときの自分用テンプレです。

# 実装
LambdaのPython3.6です。

“`python
import json
import boto3
from multiprocessing import Process, Pipe
import time

def worker(conn, num):
# ここに処理を記述
# boto3を使う場合
# session = boto3.Session()
# s3 = session.client(‘s3′)
print(num)
response = f’process: {num}’
time.sleep(1)
conn.send(response) # 処理結果
conn.close()

def lambda_handler(event, context):

results = []
processes = []

元記事を表示

AWS Lambdaで環境変数のTZは指定しないほうが良いかもしれない件

##はじめに
Lambdaで現在日時を取得する際は、
リージョン関係なくデフォルトでUTCとなっています。

そのため業務等では扱いやすいようにJSTに変換して運用するかと思いますが、
2022年1月現在、よく見かける方法が2パターン存在します。

本記事はPython3.9を使用していますが、
他の言語に読み替えていただいても内容は問題ありません。

##1.Lambdaの環境変数でタイムゾーンを設定する方法

まずは環境変数なしで取得してみます。

![スクリーンショット 2022-01-28 18.36.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/2f5a7920-6d0c-6973-6e14-63b00bc016e7.png)

“`python
from datetime import datetime

def lambda_handler(event, context):

current_at = datetime.now().strftime(‘%Y-%

元記事を表示

新型コロナウイルスの第6波をSIRモデルを使って、予測してみた

# まず、必要なモジュールをインストールする

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
import pandas as pd
plt.rcParams[‘font.family’] = ‘Hiragino Sans’
import datetime

# 厚生労働省のオープンデータからcsvをダウンロードして、python のpandasで読み込む

read csv
df = pd.read_csv(‘第6波生データ.csv’, header=0)
df.head()

![Screen Shot 2022-01-28 at 21.45.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518583/c1bcbf88-01c0-5f0f-4a9e-dab4beb5c0a2.png)

# 大阪の新規感染者数と、日数を表に表した

osaka = df[[‘Dat

元記事を表示

13億パラメータのGPT日本語学習済みモデルが出たので会話応答を生成してみた

# 概要
OpenAIが開発した言語モデルであるGPTの新しい日本語学習済みモデルが先日rinna株式会社から公開されたので([プレスリリース](https://prtimes.jp/main/html/rd/p/000000025.000070041.html))、試してみることにしました。
# お断り
書いた人はすっとぼけでおっちょこちょいで、深層学習について理解できていない部分も多々あります。間違いがないよう注意を払っていますが、誤った記述があればご教授いただけるとすごくありがたいです。
# 実行環境
“`
OS: macOS Big Sur (version 11.6.2)
CPU: 2.8GHz クアッドコア Intel Core i7
メモリ: 16GB
“`
# インストール
“`bash:
$ pip install torch transformers
“`
# サンプルコードをいじってみる
今回使用するモデル、[japanese-gpt-1b](https://huggingface.co/rinna/japanese-gpt-1b)はHugging Fac

元記事を表示

Kaggle振り返り PetFinder.my – Pawpularity Contest

# 初めに
 この記事は2021年から2022年にかけて開催された「PetFinder.my – Pawpularity Contest」の内容を振り返るために書いています。開始1か月後から参加し、私の結果は、114 / 3537 (Solo silver medal, [Leaderboard](https://www.kaggle.com/c/petfinder-pawpularity-score/leaderboard)) でした。

Kaggle に [コード](https://www.kaggle.com/c/petfinder-pawpularity-score/discussion/301029) を公開していますので、ご興味のある方は是非。

![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1930460/78b36d0a-e52f-28eb-3f85-2f72e87f99b6.png)

# PetFinderコンペについて
## 概要
 2020年にも開催されたPetFin

元記事を表示

Pythonで相対URLを取得→現在のURLディレクトリと結合→絶対パスに変換する(そして開く) [スクレイピング]

###スクレイピングしたいサイトのDOM構造に相対パスがあり、
(例)\タイトル: \相対パス1\\

そのDom構造を持つ現在のディレクトリと結合したいとする。

https://www.対象のサイト.com + /docs/101

https://www.対象のサイト.com/docs/101 としたい。
##①架空のDom構造を作る
“`
from bs4 import BeautifulSoup

# <--実際のサイトでクロールver ※実際のサイトでクロールしたいときはコメントアウトをはずしてください # from selenium import webdriver # from selenium.webdriver.chrome.options import Options # from time import sleep # options = Options() # #WebDriver(ブラウザ)の起動 # DRIVER

元記事を表示

ctypeslibを使ってFortranを呼び出すときにnumpy.ndarrayのviewを渡してはいけない

# はじめに

標題の通りで、ctypeslibを使ってFortranのサブルーチン(あるいはCの関数)を呼び出すとき、numpy.ndarrayのviewを渡すと正しく動作せず、場合によってはSegmentation faultでプログラムが落ちることがあります。

numpy.ndarrayを操作したときにcopy(コピー)が作成されるのかview(ビュー)が作成されるのかの区別と、メモリに確保された配列をFortran(あるいはC)がどのようにアクセスしているかを考えると当たり前ですが、うっかりハマって時間を溶かしたのでまとめました。

# サンプルコード

## Fortran側の準備

まず、以下のように3次元配列を受け取ってその要素を標準出力するサブルーチンを作成します。

“`Fortran
module mod
contains
subroutine print_array3d(array3d, imax, jmax, kmax) bind(C)
use, intrinsic :: ISO_C_BINDING
integer(c

元記事を表示

Python で Wordle を実装する

## Wordleとは

https://www.powerlanguage.co.uk/wordle/

## モチベーション

何かコードを書きたかったので、最近流行りのWordleを実装した。

## 成果物

実装時間: 1〜2時間
単語リストは[こちら](https://github.com/splch/slc.is/blob/main/posts/data/wordles.txt)より拝借
(日本語の単語リストを作れば日本語対応も可能)

![スクリーンショット 2022-01-28 18.31.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235435/ec4c1237-9507-fb8e-3e13-e46efbd52027.png)

## 感想

プログラミングさわりたての人にちょうどいいくらいの実装難易度と感じた。

入力の判定部分(`Wordle.evalueate`)が地味に面倒で、もう少しいい書き方がありそう。

ソルバー(`Solver`, `StupidSolver

元記事を表示

QGISでCSVの処理をしてみた。

先日QGISのグラフィカルモデラーを使って便利だったのでGISではなくてCSVのデータの場合でも使えるか試してみました。
[QGISのグラフィカルモデラーを使ってみた。(ver.3.22)](https://qiita.com/kazu_muramatsu/items/a96f97944d5b69233036)
今回は国土地理院の災害伝承碑のデータの種別を少し変更して、種別ごとのデータに分割してみたいと思います。
QGISのバージョンは3.22です。

1. インプットデータ
国土地理院のサイトからダウンロードできます。geojsonもダウンロードできますが今回はCSVをダウンロードしてください。
こんな感じのデータです。![スクリーンショット 2022-01-26 16.09.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514830/aeded357-d3f3-3565-418d-80374d9b50df.png)
文字コードはshift-jisなのでレイヤプロパティのソースで変更してくださ

元記事を表示

OTHERカテゴリの最新記事