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

Python3関連のことを調べてみた2022年02月06日
目次

[Python / PyTorch] RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index” not implemented for ‘Double’ の原因

# 概要

PyTorchを使っていたら、
`RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index” not implemented for ‘Double’`
というエラーが発生して困った。

stackoverflowで[こんな記事](https://stackoverflow.com/questions/69742930/runtimeerror-nll-loss-forward-reduce-cuda-kernel-2d-index-not-implemented-for)を見つけたが、いまいち何言ってるかよくわからない…(;゚Д゚)

という状況下で、原因を特定できたので共有しておこうという記事。
(日本語の記事がなかった)

# 原因

## 言葉で説明

pytorchのデータセットに渡す、目的変数が、「本来は整数値じゃないといけないのに、浮動小数点数になっていた」場合に発生している模様。

## コードで該当箇所を説明

私の場合は、他クラス分類タスクに対するモデルを実装していた。
そして、原因になっ

元記事を表示

単一ニューロンによる学習の実装

#数式による説明
###順伝播
単一ニューロンにおいて、順伝播は次の式で表される。
$x$は入力、$y$は出力、$w$は重み、$b$はバイアスである。
入力$x$と重み$w$の積にバイアス$b$を加えたものを$u$とし、$u$を活性化関数$f$に渡す。

“`math
u = wx + b \\
y = f(x)
“`
ここではシグモイド関数を活性化関数として使用するため、出力$y$は次の式で表される。

“`math
y = \frac{1}{1+exp(-(wx+b))}
“`
###誤差
ここでは回帰を扱うため、誤差関数として次の二乗和誤差$E$を使う。
$t$は正解、$y$は出力を表す。

“`math
E = \frac{1}{2} \sum_{j=1}^m (y_j – t_j)^2
“`
単一ニューロンは出力が1つのみなので、順伝播1回当たりの二乗和誤差$E$は次の式で表される。

“`math
E = \frac{1}{2} (y-t)^2
“`
###最急降下法
ここでは、次の式で表される最急降下法を使用して重みとバイアスを更新する。

“`math

元記事を表示

Selenium で 2ch に投稿

“`python
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common import keys
import chromedriver_binary, time

driver = webdriver.Chrome()

driver.get(” スレのURL “)
driver.get_cookies()

comment = ‘書き込み内容’
driver.find_element_by_name(“MESSAGE”).send_keys(comment)
driver.find_element_by_name(“submit”).click() # 書き込み画面送信

time.sleep(1)
driver.find_element_by_name(“submit”).click() # 確認画面送信

driver.close()
driver.quit()

元記事を表示

【機械学習】学習の終了時間を予測してSlackに通知する

# はじめに
機械学習には多くの時間がかかります。
その際にログをひたすら見つめるのもひとつの楽しみ方ですが、もし終了時間を予測することができれば、学習を見にいく時間を減らせそうです。
そこで学習の終了時間を予測して、Slackに通知するプログラムを作成してみます。

# 前提
### SlackAPIキーを取得している
SlackAPIのキー取得方法などについて分かりやすく説明されている記事がありますので、そちらを参照してください。
[Incoming Webhooksのエンドポイントを取得する](https://qiita.com/ik-fib/items/b4a502d173a22b3947a0#incoming-webhooks%E3%81%AE%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)

### 環境
– Ubuntu 20.04
– Python 3.8
– slackweb 1.0.5

これらの

元記事を表示

kivyMDチュートリアル其の肆什漆 Behaviors – Ripple篇

余寒の候、いかがお過ごしでしょうか。
本格的な寒さが身にしみる頃、風邪をひいていませんか。

[引用元]

時候の挨拶 2月(如月:きさらぎ)

はい、ということで時候の挨拶も踏まえながら、今週もKivyMDのお時間がやって
参りました。余寒って今の季節にぴったりな熟語ですよね。投稿者はまんまと風邪
にやられていますが、どうかみなさんは体調管理のほどを。健康第一。

まぁちょっとくらい風邪ひいたところで、この投稿は止めません。続けてくれ!とは
言われないですがw ほぼ自己満足の世界観です。というどうでも話もありますが、今週
はというと、タイトルの通りRipple篇となります。もうあと3回。。いや投稿も止めま
せんし、なんかEffects章なんかもいつの間にか出来ているしで、やることだらけです。

まぁその話は再来週くらいにしてもよかとですね。では、今週も元気にレッツラゴ。

## Ripple

冒頭にはこのような一文が記載されています。

> Classes implements

元記事を表示

3行でバーコード作成

## ライブラリをインストール
“`
pip install pybarcodes
“`
## コーディング
“`
from pybarcodes import JAN
barcode = JAN(”)
barcode.show()
“`
## 実装動画

元記事を表示

爆速化するためにpythonからRustを呼び出そう!

## Rustで作成したライブラリをpythonで呼ぶ方法
PyO3を利用するには、ツールチェインのnightly版をインストールする必要があります。

“`
rustup install nightly
rustup default nightly
rustup toolchain list
“`

Cargo.tomlにPyO3の依存関係を追記します。

“`
[lib]
name = “eratosthenes”
crate-type = [“cdylib”]

[dependencies.pyo3]
version = “0.13.2”
features = [“extension-module”]
“`
ダイナミックライブラリを作成するために、–releaseをつけてビルドします。

“`
cargo build –release
“`
もし以下の様にエラーが出る場合は、バージョンを新しくすることで解決できる可能性があります。
参考:https://github.com/rust-osdev/x86_64/issues/234

“`
#![cfg_at

元記事を表示

Discord Botがエラーを吐いたときにエラーIDを発行して通知する その2

Discord Botでエラーが発生したときにコンソールをわざわざ見に行くの、めんどくさいですよね?
エラーが発生したときにユーザーにその旨を通知したいですよね?
IDを振って管理したいですよね?
__*それならコーデディングだ!*__
## しくみ
#### エラー発生時
1. on_command_errorでエラーを拾う
2. そのエラーに関する情報を専用のチャンネルに送信する
3. そのメッセージのIDを36進数に変換
4. 変換したIDをつけてエラー情報を実行者に返す

#### エラー情報取得時
1. 36進数のIDを10進数に直す
2. 直したIDを用いてエラー情報を取得し、そのメッセージのembedをそのまま送信する

こんな感じで。

## れっつこーでぃんぐ!

numpyとtracebackをインポートしておいてください。

“`py
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
awai

元記事を表示

多項式回帰の実装

#数式を使った説明
###多項式の一般形
$n$次の多項式は下記の式で表すことができる。この場合、$a_0, a_1, …, a_n$が関数のパラメータとなる。

“`math
f(x) = \sum_{k=0}^n a_k x^k
“`
###最小二乗法
最小二乗法とは、下記の式で表される二乗和$J$を最小にする、関数$f(x)$のパラメータを求めることである。
$t_j$は各データを表す。関数の出力と各データの差を2乗して総和をとることで、二乗和を表す。

“`math
J = \sum_{j=1}^m (f(x_j)-t_j)^2
“`
機械学習においては、上記に$\frac{1}{2}$を掛けて誤差とする、下記の二乗和誤差がよく使われる。$\frac{1}{2}$を掛けるのは微分する際に扱いやすくなるためである。

“`math
E = \frac{1}{2} \sum_{j=1}^m (f(x_j)-t_j)^2
“`
###最急降下法
多項式回帰の場合、二乗和誤差$E$は下記の式で表される。

“`math
E = \frac{1}{2} \sum_{j=

元記事を表示

FlaskForm を利用したフォームバリデーション

# WTForm,FlaskFormを使ってみたい
*FlaskFormを使うにあたり、あまり記事がなかったので備忘録もかねて記事にします。*
*入力フォームで送られてきたデータを受け取る動きを例にします*

*まず下準備*

“`index.py
from flask import Flask
from flask_wtf import FlaskForm
from wtforms import (StringField, PasswordField, BooleanField,
RadioField, SelectField,SubmitField, ValidationError)
“`
# フィールドの例
`StringField` : 文字列
`PasswordField` : パスワード
`BooleanField` : チェックボックス
`RadioField` : ラジオボタン
`SelectField` : セレクトボックス
`SubmitField` : 送信ボタン
`ValidationError` :

元記事を表示

Python リストが1次元か多次元か確認するときに便利なメソッド

# はじめに

リストの次元数によって処理を分岐しようとしたときに調べました

主に1次元リストを想定しているが、まれに2次元リストの処理もしたいときにどうすべきか考えて

# 方法

“`python
def how_dimensions(something_list):
if not isinstance(something_list[0],list):
print(‘1次元リスト’)
else:
print(‘多次元リスト’)

ls1 = [1,2,3]
ls2 = [ls1,ls1]

how_dimensions(ls1)
how_dimensions(ls2)
“`
“`
1次元リスト
多次元リスト
“`

元記事を表示

情報量の基本的な考え方

#情報量とは
情報量(エントロピー)とは、情報理論において情報を定量的に扱うために定義された概念である。
エントロピーは、もともと物理学の分野である熱力学や統計力学における概念である。情報理論において統計物理学で扱われるエントロピーと数学的にほぼ同じ計算式が現れたため、それを「エントロピー」と呼ぶようになった。

#選択情報量(自己エントロピー)
選択情報量は、あるできごとがどれほど起こりにくいかを表す尺度である。
あるできごと$E$が起こる確率を$P(E)$とする。このときの選択情報量$I(E)$は次の式で表される。

“`math
I(E)=-\log_2 P(E)
“`
選択情報量は確率の対数を負にしたものとして表される。対数の底には$2$を使うことが多いが、何を選んでも本質的な違いはない。
上記の式のように、できごと$E$の確率$P(E)$が小さい(珍しい)ほど選択情報量は大きくなる。
選択情報量をグラフにすると下記のとおりとなる。

![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

fooddetection ~料理検知ライブラリの使い方~

以前、世界の料理の配色割合を調べていた時に画像から料理を抽出する作業が必要となったことがあった。
今回はその料理抽出作業をライブラリ化したので使い方をまとめてみた。
もし利用できそうな機会があれば是非利用してみて欲しい。

料理抽出作業とは

この記事で言う料理抽出作業とは一枚の料理画像から料理以外の要素をできるだけ排除し料理部分を残す作業のことである。

中華.jpg
↑ 料理抽出作業前画像
上の画像から料理部分だけを抽出し(背景などを削除したい)、下の画像のように背景など不要な部分を透明化させることを目的としている。

中華検知.png【Python】パッケージからクラスをimportする。モジュール名は省略可能

### 概要
Pythonのパッケージとモジュールのimportの方法に関してようやく腑に落ちたのでメモ。

#### 例:scikit-learnの graph_lasso_モジュールのGraphicalLassoクラスをimportする
https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/covariance/_graph_lasso.py#L338

sklearn/covariance/graph_lasso_.py 内にGraphicalLassoクラスが定義されています。

今回の例において、各オブジェクトの名称は以下のように解釈できます。

>sklearn: パッケージ <- ディレクトリであり、\_\_init\_\_.pyが存在するため covariance: パッケージ <- ディレクトリであり、\_\_init\_\_.pyが存在するため graph_lasso_: モジュール <- graph_lasso_.py という名のファイルが存在する GraphicalLasso: クラス <

元記事を表示

DjangoでiCalendar(.ics)ファイルをダウンロードする方法

## はじめに
こんにちは、reimeiです。
先日Djangoで開発しているwebアプリケーションにてDBに保存しているスケージュールをiCalendarファイルに書き出して返す処理を実装しようとした際、つまづいたので共有しようと思います。

## 解決策
▼とりあえず、必要なライブラリをインストール

“`bash
$ pip3 install ics
“`

▼実装例

“`python
from ics import Calendar, Event
import arrow
import os
from django.http import HttpResponse

def download_icalendar_file(request):
calendar = Calendar()
event = Event()
event.name = “飲み会”
event.begin = arrow.get(“2022-2-3 20:00:00”, “YYYY-MM-DD HH:mm:ss”) \
.replace(tzi

元記事を表示

ModuleNotFoundError: No module named ‘モジュール名’のエラーが出た時の対処法

# 前提
モジュールを使おうとしてimportを行ったところ、ModuleNotFoundError: No module named ‘モジュール名’のエラーが出てしまい、先に進めなくなったので、その対処法の備忘録です。

## 実行環境
Python 3.9.5
pip 22.0.2
jupyter notebook 6.4.3
macOS

こちらに記載するコードはjupyter notebookに書き込む場合を記載しています。
jupyter notebookでは、先頭に!がついているときは、ターミナル操作になるので、jupyter notebookをお使いにならずターミナルやテキストエディタを使う場合、各自ターミナルでの操作になると読み替えてください。

# やったこと
パスがつながっていないのでは、と考えたので、以下の方法でパスの設定をしました。

“`
!pip show モジュール名
“`

すると以下の様な出力結果が出ます。

“`
Name: モジュール名
Version: バージョン番号
Summary: モジュールの説明
Home-page: URL
A

元記事を表示

超初心者がAtcoder ProblemsのB問題を128回から135回までpythonで解いてみた件【ほぼ自分用】

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

Guidebook

https://atcoder.jp/contests/abc128/tasks/abc128_b

“`python:practice.py
n = int(input())
restaurants = [list(input().split()) for _ in range(n)]
ans = []
for i in range(n):
ans.append([i+1,restaurants[i][0],int(restaurants[i][1])])
ans = sorted(ans, key=lambda x:x[2],reverse=True)
ans = sorted(ans, key=lambda x:x[1])
for ans_line in ans:
print(ans_line[0])
“`

最初にそれぞれのレストランの番号をインデックス番号+1でそれぞれ

元記事を表示

Python3エンジニア認定データ分析試験 合格体験記

#はじめに
2022年1月、Python3エンジニア認定データ分析試験に無事に合格できました。
私自身の背景を含めた合格までの勉強方法や、ポイントなどをお伝えできればと思います。
これから受験される方の、一助になれば嬉しいです。

#筆者の背景
・文系(数学的教養はかなり乏しいと思います)
・Pythonは実務では使用していません
・2021年10月にエンジニア認定基礎試験 合格済み

#試験の概要
Python3エンジニア認定データ分析試験は主教材である翔泳社出版の**「Pythonによるあたらしいデータ分析の教科書
」**から出題されます。
![スクリーンショット 2022-02-02 14.15.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954118/649dee49-b01d-f3d6-77d6-6ab1e214e41f.png)
この教科書の内容から試験では、以下の範囲と割合で出題されます。
![SnapCrab_NoName_2021-11-8_18-46-22_No-00.pn

元記事を表示

超初心者がpythonでAtcoder Problemsを114回から解いてみた【9割自分用】

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

754

https://atcoder.jp/contests/abc114/tasks/abc114_b

“`python:practice.py (2)
s = input()
ans = 753
for i in range(len(s)-2):
temp = abs(int(s[i]+s[i+1]+s[i+2])-753)
if ans > temp:
ans = temp
print(ans)
“`

連続する3桁の整数をつながりとして抜き出して、753(753にできる限り近い数字を求めたいから)で引いた時の絶対値を最初に求めます。 次にその時点で最小の差と比べて、抜き出した値の方が753との差が小さいかった場合抜き出した値と753の差がansに入っていきます。

Christmas Eve Eve

https://atcoder.jp/contests

元記事を表示

はじめてのGoogle AIY Voice Kit⑥【サンプルコード実行編】

# はじめに
前回のラズパイSSH接続編の記事は[こちら](https://qiita.com/yuzuki6v6/items/c64453e15a5d4a700a22)から:information_desk_person:
今回はサンプルコード実行編です。
LEDの操作、ボタンの操作、スピーチ(発話)、マイクの機能を試していきたいと思います。

# サンプルコードでできること
サンプルコードは[公式サイト](https://aiyprojects.withgoogle.com/voice/#makers-guide–python-api-library)に記述してあります。
また、今回は[こちら](https://ohmyenter.com/cheat-sheet-for-google-aiy-voice-kit-v2-with-python/)のサイトも併せて参考にさせていただきました。

サンプルコードでは、以下の機能を確認することができます。

– LEDの操作
– LEDのオン・オフ
– LEDの点滅
– LEDの明るさ調整
– LEDの点滅形式
– L

元記事を表示

OTHERカテゴリの最新記事