Python3関連のことを調べてみた2022年08月27日

Python3関連のことを調べてみた2022年08月27日

【Pytorch】Transformerを実装する

# はじめに
CNNやRNNと並んで重要なニューラルネットワークの仕組みとして、アテンション機構が挙げられます。
アテンション機構は入力データのどこに注目するべきかを学習することが可能です。

従来、アテンション機構はRNNやCNNなどと組み合わせて実装されることが専らでしたが、
「Attention Is All You Need」にてアテンション機構のみを用いたモデル(RNNやCNNを用いない!)「Transformer」が登場しました。
本モデルの特徴として、高い精度と容易に並列処理が可能な点が挙げられます。
登場直後は自然言語処理を中心として利用されてきましたが、現在では異なるタスクでも派生モデルが良い結果を残しています。(セグメンテーションのViT、SegFormerなど)

そこで今回は、近年のニューラルネットワークモデルを学ぶ上で重要なTransfomerの理解を深めるため、PytorchでTransformerの実装を行いました。

# Transformerとは
[【原著論文】Attention Is All You Need](https://arxiv.org/a

元記事を表示

【Selenium】バージョン更新後のWarningについて

seleniumのバージョンによりfind_element_by_xpathなどで要素検索すると以下ようなWarningメッセージが出ます。

“`bash
:1: DeprecationWarning: find_element_by_tag_name is deprecated. Please use find_element(by=By.TAG_NAME, value=name) instead
“`

翻訳にすると以下のようなメッセージです。

“`bash
:1: DeprecationWarning: find_element_by_tag_name は非推奨です。代わりに find_element(by=By.TAG_NAME, value=name)を使って下さい。
“`

また、以下のバージョンの場合に発生します。

“`bash
$ pip list | grep selenium
selenium 4.1.3
“`

どうやらfind_element_by_XXはfind_element(By.XX

元記事を表示

Pandas カスタム条件の関数でDataframeを比較する

Dataframe同士を比較する際は、
* `df1.eq(df2)` [pandas.DataFrame.eq](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.eq.html)
* `df1.compare(df2)` [pandas.DataFrame.compare](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.compare.html)

などが用いられるが、比較の条件を緩くしたり、厳しくしたい場面がある。

今回、NaNとNaNは等しくないと判断され差分がでる仕様が好ましくなかったため、
以下の、自作の比較用関数で対応したので、共有する。

# テストデータを用意する

“`python
from IPython.display import display
import pandas as pd
import numpy as np

df1 = pd.DataFrame(
{
“col1”:

元記事を表示

[Python2 / Python3] python2 から python3 にアップデート / 移行した際のソース修正項目メモ

# 概要

python2で書かれているソースコードをpython3で動かす際に発生しそうな or 発生したエラーポイントをまとめたもの。

たとえばソースを書き換える度にbuildし直す必要があるなどの事情で、なるべくソースコードの書き換え回数を抑えたい…という人には特に役に立つかも。

# 重大な補足

….と思ったら、python2からpython3へのソース書き換えを自動で行ってくれるツールがあるらしいですよ!!
知らんかった!!!!\_(-ω-`\_)⌒)\_(修正済み)

私は使っていないのですが、ソースコードの修正量が膨大な方は以下の記事などを見てみるのもありだと思います>_<。 https://docs.python.org/ja/3/library/2to3.html http://j-parc.jp/ctrl/documents/articles/python2to3/python2python3.pdf # 変更内容 では、手動修正時にエラーが出るポイントを見ていきましょう(・ω・´) ## 1. print ```python # pyt

元記事を表示

【AtCoder解説】PythonでABC265のA,B,C,D,E問題を制する!

**ABC265**の**A,B,C,D,E問題**を、**Python3**でなるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増える

ご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!

**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
よかったら**LGTM**や**拡散**していただけると喜びます!

# 目次

[ABC265 まとめ](#abc265-まとめ)
[A問題『Apple』](#a問題apple)
[B問題『Explore』](#b問題explore)
[C問題『Belt Conveyor』](#c問題belt-conveyor)
[D問

元記事を表示

discordのイベント検知の方法

# 動機
自分がよく使っているdiscordのBOTがどう動いているのかが気になった。

# 仕組み

自分なりに解釈したものが混ざっています。
図が下手なので言葉で。

送受信はwebsocketを使います。

– websocketでゲートウェイを開拓。
– string形式でwebsocketにtokenを送り、自分の情報を伝える。(send_str()のop: 2で承認を求める)
https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes

“`py
string = {
“op”: 2,
“d”: {
“token”: “YOUR_BOT_TOKEN”,
“properties”: {},
“intents”: 3276799
}
}
“`
– `op`: discord側からの通知の種類の番号。2 は `Identify`、
> Starts a new session du

元記事を表示

ローカル環境のStable Diffusionで大量に画像を生成して比較する

# はじめに
Stable Diffusionをローカル環境で動かしつつ大量生成した画像をサムネイル表示して比較したかったので、VSCodeのJupyter Notebookで実行する手順と便利関数を作ってみました。
プロンプト用の英単語調べるのが面倒なので、ついでにDeepLのAPIで日本語を翻訳する関数もいれてます。
img2imgライブラリでの画像入力にも対応しました。(2022/08/26追記)
![サムネイル表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14831/61e51638-7fc4-7d39-c77f-3dd34c8f4909.png)

# 検証環境
* OS: Windwos 10 Pro
* CPU: AMD Ryzen 5 5600X
* GPU: NVIDIA GeForce RTX3080 (Game readyドライバーバージョン516.94)
* Memory: 32GB

# 必要なソフトウェアのインストール
* [CUDA1.6](https://devel

元記事を表示

【Python】陰陽座『廿弐匹目は毒蝮』をシミュレート

## 概要

陰陽座の楽曲『廿弐匹目は毒蝮』の状況を、Pythonでシミュレートしてみました。

前回の投稿では、「ほんのわずかな確率でも、繰り返していれば起こる」ことをシミュレーションしました。理論上の数値と実際の結果を比較してみるのが楽しかったです。

https://qiita.com/AnPanda/items/ae3fbd9cee2248a7abb5

他のネタでもやってみようと思い、この曲のことを思い出しました。

https://www.uta-net.com/movie/219717/

### シチュエーション

> 「この茂みから100回に1回、もしくは1%の確率で毒蛇が出る」と言われたとします。人によりますが、これは概ね「ではこの1回は大丈夫だろう」と思える確率だと言えるでしょう。しかし、確率1%が持つ本当の意味は“100回やれば必ず1回出る”ではありませんし、逆に“100回やるまでは出ない”という保証もまったくありません。そういうときに限って、中途半端な“22回目”くらいのところで出たりもする…

http://mttb.jugem.jp/?eid=1139

元記事を表示

Stable DiffusionをGoogle Colaboratory上で動かして神絵ガチャを回してみる

## はじめに

最近神絵生成AIが話題ですね。
絵描きの端くれとしてこの波に乗り遅れるわけにはいかない!ということで、つい最近公開された [Stable Diffusion](https://github.com/CompVis/stable-diffusion) を [Google Colaboratory](https://colab.research.google.com/) (以下Google Colab)上で実行して遊べるようにしてみました。 :paintbrush:
[こちら](https://github.com/CompVis/stable-diffusion#diffusers-integration) に記載されている [diffusers library](https://github.com/huggingface/diffusers/tree/main#new–stable-diffusion-is-now-fully-compatible-with-diffusers) を使用してサクッと動かすのがゴールです。

以下環境構築をしてコードを動かすまでのま

元記事を表示

話題の Stable DiffusionをColabで作ってみた!

今話題のAI画像生成の簡易的なソースを作りましたので、試してみたい方は是非使ってみてください!

# 実行環境
Google colab
Python 3.7.13
diffusers 0.2.4

# 前提条件
Googleのアカウントがある
huggingfaceのアカウントがある

# 環境構築手順
1. ライセンスの確認
モデルカードにアクセスしてライセンスを確認します。
https://huggingface.co/CompVis/stable-diffusion-v1-4
![CompVis_stable-diffusion-v1-4 · Hugging Face – Google Chrome 2022_08_23 23_01_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396776/234a7eac-b69d-b31a-da5f-8a4968424d2d.png)

2. アクセストークン発行
https://huggingface.co/settings/tokens
![C

元記事を表示

Python小技集 – #2 多次元リストの平坦化 (flatten)

こんにちは!beatbox4108です。
今日はPythonで多次元リストを平坦化 (flatten)する方法について説明していきます。

# まず平坦化とは?
平坦化とは、簡単に言えば、
“`python3
[
[0,1,2,3,4],
[5,6,7,8,9],
[10,11,12,13,14]
]
“`

“`python3
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
“`
のようにネストされたリストのネストを外すような操作です。

このような操作を行う方法はいくつかあります。
# 1.sum関数を使う方法
pythonのsum関数には初期値が設定できるので、その初期値に`+`演算をする原理で合成してしまおうという魂胆です。
“`python3
l=[[0,1],[2],[3,4,5]]
print(sum(l,[]))
“`
“`python3
[0,1,2,3,4,5]
“`
:::note warn
第二引数にリストを設定するのを忘れないようにしましょう。
:::
# 2. itertools.chain

元記事を表示

ひたすら素数を生成するプログラムを書いてみた

アタマの体操がてら、ひたすら素数を生成するプログラムを書いてみた。
# Source
“`prime_num.py
import math
import sys

def check(num, prime_num):
index = 0
if not prime_num:
prime_num = [2]
min_factor = prime_num[index]
max_factor = math.floor(math.sqrt(num))
while min_factor <= max_factor: remainder_big = num % max_factor remainder_small = num % min_factor if remainder_big == 0 or remainder_small == 0: return False else: index += 1 min

元記事を表示

~/.python_history の場所を変更する

ホームディレクトリに存在する`.python_history`の場所を変更する方法を紹介します.

# この投稿の概要
– `.python_history`は Python の対話モードの履歴を記録するファイル
– デフォルトの設定では,ホームディレクトリに保存される
– ホームディレクトリに dotfiles が多く存在する状況は気持ちが悪い
– 本稿では,`.python_history`の保存場所を変更する方法について紹介

# 環境
– macOS 12.5.1 Monterey (2022 M2 MacBook Air)
– Python 3.10.6 (バージョン管理ツール asdf でインストール)
– zsh 5.8.1 (x86_64-apple-darwin21.0)

本稿では,macOS を対象として説明します.
ですが,Linux においても同様の方法が適用可能だと思われます.

# やること
– 環境変数`PYTHONSTARTUP`にインタプリタ起動時に自動で読み込むスクリプトを設定
– 今回は,`~/.config/python/pythonstart

元記事を表示

Twitterに対してtweepyを使って、Pythonでツィートする

# はじめに
Twitterに対して、tweepyというpythonのモジュールを使って、ツィートする方法を説明します。
初めてのQitaの投稿になります。
これから少しずつでも投稿して、技術力を伸ばしていけたらと思います。

## tweepy をインストールする

“`
pip install tweepy
“`
## サンプルコード
“`python:tweet.py
import tweepy

def twitter_bot() -> None:
# XXXXXXXXXXXXXXXXXXには自分のコードを設定してください
ck = ‘XXXXXXXXXXXXXXXXXX’
cs = ‘XXXXXXXXXXXXXXXXXX’
at = ‘XXXXXXXXXXXXXXXXXX’
ats = ‘XXXXXXXXXXXXXXXXXX’

client = tweepy.Client(consumer_key=ck, consumer_secret=cs,
access_toke

元記事を表示

discordのwebhookはdiscord.pyで楽して作ろう

こんにちは!beatbox4108です。
ところで、discordにはwebhookという機能があるのはご存じですか?
discordのwebhookは、認証なしで、簡単なHTTPリクエストだけで、
特定のチャンネルにメッセージを送信する機能です。
ですが、APIはbotと比べると簡単ですが、やっぱり面倒くさいのが事実。
ってことで、今回はpython用のdiscordAPIラッパーのdiscord.pyを使って、簡単にメッセージを送信してみましょう!

# [Webhookの作成方法](https://support.discord.com/hc/ja/articles/228383668-%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB-Webhooks%E3%81%B8%E3%81%AE%E5%BA%8F%E7%AB%A0)は、[こちら](https://support.discord.com/hc/ja/articles/228383668-%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB-Webhooks%E3%81%B8%E3

元記事を表示

『読書好きな方必読』自分の好きな「作家」や「シリーズ本」の新刊情報のスクレイピング

> 毎月、大変な量の新刊が発売されるので、「自分の好みの作家」や「シリーズ物」の新刊の状況を確認できるようにしたいと思い作成しました。

##### DATAは『TRC新刊図書オープンデータ(図書館流通センター)』をからスクレイピングで取得し加工してます。
![スクリーンショット 2022-08-22 10.28.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634708/8f6f716d-03b2-e954-472e-2d7863ebfa5f.png)
##### Terminalの表示例
![IMG_6603.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634708/028584a4-6ee3-40bf-9188-6642ccd4b6ce.png)
##### Numbersの表示例
![スクリーンショット 2022-08-22 10.29.06.png](https://qiita-image-store.

元記事を表示

Pythonのフォーマッタをblackに移行してみたので色々所感をまとめてみる

最近以下の個人開発のPythonライブラリでフォーマッタをautopep8からblackに移行したので雑多に所感などをまとめておきます。

https://github.com/simon-ritchie/apysc

# blackとは

– Python界隈でこの記事執筆時点で一番スターの付いているPythonのフォーマッタライブラリです(執筆時点でGitHubのスターが約3万)。
– Pandasやscikit-learnなどのPython界隈の有名ライブラリ含め、非常に多くのリポジトリで使用されています(記事執筆時点でGitHub上のUsed byの表示が約17000リポジトリ)。
– 色を混ぜて別の色にできない黒色のごとく、基本的にスタイルの調整が効きにくくなっているのと調整せずに使うのが基本となっているようです。
– 融通が効かない代わりにプロジェクトごとにスタイルが異なっていたりといったことを避けられたり、最初のスタイルを決めたりする手間を省くことができます。つまり各プロジェクトでスタイルが統一されるためblackに慣れていればblack採用プロジェクトでは違和感

元記事を表示

DjangoでBootstrapを導入する

# 1. はじめに
今回はDjangoにBootstapを導入する方法を紹介します。
また、Bootstap導入後に前回の「[DjangoのWebアプリケーションにユーザ認証を追加する(django-allauth)](https://qiita.com/t-shirayama/items/11d022d78ea3c5623c80)」で作成したログイン画面に適用していきます。

# 2. django-bootstrap5をインストール
pipでdjango-bootstrap5をインストールします。
“`
pip install django-bootstrap5
“`

# 3. settings.pyの変更
settings.pyのINSTALLED_APPSにdjango_bootstrap5を追加します。
“`
INSTALLED_APPS = [

‘django_bootstrap5’, # 追加
]
“`

# 4. テンプレートに適用
テンプレートの先頭行に下記のコードを追加します。
“`
{% load django_bootstra

元記事を表示

Codeforces Round #816 (Div. 2) のA, B, C問題をPython3を使って解く

## 初めに
こんにちは。この記事では先日(2022/08/20)に行われたCodeforces Round #816 (Div. 2)のA, B, C問題の解説をPython3を用いてしていきます。Codeforcesは解説がAtCoderほど十分にないこと、そもそもPythonを使って解いている人も少ないことから、自身の解法とコードを共有しようと考えました。解説はコンテスト中に解けた問題+1問のみとしています。宜しくお願いします。

### コンテストへのリンク
[Codeforces](https://codeforces.com/) \
[Round #816 (Div. 2)](https://codeforces.com/contest/1715)

– [初めに](#初めに)
– [コンテストへのリンク](#コンテストへのリンク)
– [Problem A Crossmarket](#problem-a-crossmarket)
– [問題文](#問題文)
– [入力](#入力)
– [出力](#出力)
– [解法](#解法)
– [ACコード](

元記事を表示

[0から始めるQISKIT#3-1]量子プログラミングで必要な量子計算を説明してみる (要追記)

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$
# 概要
量子プログラミングはざっくりと以下の手順で計算を解く認識です。
##### 手計算→実装→実装結果と手計算の結果をすり合わせる。
なので自分の復習のためにどのような計算を行うか記述してみました。

また自分の持っている入門書では数式が優しく書かれているが、細かい計算の仕方が足りないなと感じる部分もあったため取り組んでみました。

# 量子回路
前回使用した回路で使われる計算を書いてみる
https://qiita.com/Y10-JP/items/7f826277d95b422f281c
“`Sample.py
from qiskit import QuantumCircuit
import matplotlib.pyplot as pl

元記事を表示

OTHERカテゴリの最新記事