- 1. DeepLearning基礎技術まとめ
- 2. Scanline Seedfillによるペイント関数
- 3. Ubuntu: Visual Studio Code の使い方
- 4. qSVMという二値しか使えない多クラス分類
- 5. ランダム量子回路ジェネレーターを作ってみた。
- 6. ChatGPTにいろいろな呪文を唱えて、魔法を詠唱してもらった for Python.
- 7. PythonでRaspberryPiで撮影したカメラ映像をリアルタイム転送する
- 8. ハノイの塔を解くプログラム python3
- 9. AtCoderの暖色コーダ(黄・橙・赤)はどれだけの速度でコードを書く? ユーザの解答時間を色別で集計してみた
- 10. 久しぶりにpython書いたら複数文字列の演算子を使った条件式の書き方わからんくなってた
- 11. Azure Web Appsを使ってみてなんか気になったところ
- 12. 再帰によるpaint関数
- 13. Rembgでレシート画像を切り抜き
- 14. Windowsとpython3.11で”delimiter” must be a 1-character stringというエラー
- 15. Pythonで、我ながら下らないコードを書いてしまった(学習まとめ?)
- 16. DDAによる線分描画
- 17. InfluxDB v2: API の使い方 (Python3)
- 18. 【AtCoder入茶記事】入茶しました!
- 19. 自然数ローマ数字変換 Python3
- 20. unittestの使い方について個人的メモ
DeepLearning基礎技術まとめ
# はじめに
DeepLearning では様々なデータを扱います.テーブルデータ,画像,3D,時系列,etc. 何を使うにしても必要となる技術についてまとめておきます.(自分の為も兼ねて)# 目次
[1 DNNの基本](##1-DNNの基本)
[1.1 DeepLearning って??](##1.1-DeepLearning-って??)
[1.2 全結合層](##1.2-全結合層)
[1.3 活性化関数](##1.3-活性化関数)
[1.4 Loss関数](##1.4-Loss関数)
[2 特徴分布](#2-特徴分布)
[3 Validation](#3-Validation)
[4 交差検証](#4-交差検証)
[5 アンサンブル学習](#5-アンサンブル学習)# 1 DNNの基本
## 1.1 DeepLearning って??
例えば,よくある画像の分類について考えます.
?と?の画像分類をしたいとき,学習データを用意して,それをDeepLearning で学習します.すると,この写真に写ってるのは????といった問題を解けるようなものが出来上がります.これはつ
Scanline Seedfillによるペイント関数
Scanline Seedfillによるペイント関数です。
指定された背景色の部分を指定された色で塗りつぶします。
python3で書かれています。グラフィックスの部分はpygameを使っています。“`scanline.py
#!/usr/bin/python3
from pygame.locals import *
import pygame
import sys
import os
import random
MAXX=399
MAXY=399
buff=[]
pygame.init() # Pygameを初期化
screen = pygame.display.set_mode((MAXX+1,MAXY+1)) # 画面を作成
pygame.display.set_caption(“paint(scanline seedfill)” ) # タイトルを作成def point(p):
return(screen.get_at(p)[:3])def scanline(lx,rx,y,bc):
global buff
while(lx<=r
Ubuntu: Visual Studio Code の使い方
Ubuntu 22.10 で Visual Studio Code を使う方法です。
## インストール
deb ファイルをこちらからダウンロードします。
[Visual Studio Code on Linux](https://code.visualstudio.com/docs/setup/linux)“`bash
sudo dpkg -i code_1.74.3-1673284829_amd64.deb
“`インストールできたことを確認
“`text
$ which code
/usr/bin/code$ code –version
1.74.3
97dec172d3256f8ca4bfb2143f3f76b503ca0534
x64
“`## 起動
“`bash
code
“`## サンプルプログラムの実行
“`py:sample.py
import sys
sys.stderr.write(“*** 開始 ***\n”)
print(sys.version)
print(“Hello World”)
print(“こんにちは”)
qSVMという二値しか使えない多クラス分類
# はじめに
僕の卒業研究の分野に携わる内容であり、色々と試行錯誤してみた過程を示しています。卒業研究ということで過程を詳しく知る必要があったので、ほとんどのライブラリに頼らずに頑張りました(`PyQUBO`だけはどうしようもないので使いましたが)。
以下の文献を読んで実装したので、もっと詳細を知りたい場合はこちらの文献を読む方が賢明です。
[Support Vector Machine for Multiclass Classification
using Quantum Annealers](https://proceedings-of-deim.github.io/DEIM2020/papers/F3-4.pdf)## 手短に内容を説明
irisデータセットを対象に、量子計算を実行できるPythonライブラリの`PyQUBO`を使って、多クラス分類を実施しました。## qSVMとは
qSVMとは、「**q**uantum **S**upport **V**ector **M**achine」の頭文字を取った名称で、その名の通りquantum(量子)を用いたSVMに
ランダム量子回路ジェネレーターを作ってみた。
おはようございます。
[株式会社インスパイアサーチ](https://www.inspiresearch.io)の加藤 翼です。昨日、ランダムに量子回路を作るPythonスクリプトを作ったので、公開します。
とてもシンプルなスクリプトで、一回走らせると、10個ランダムに量子回路を生成してくれます。使ったのはQiskitです。
[ソースコードはGitHubにも公開しました。](https://github.com/stingraze/qiskit-random-circuit-generator)“`python3
#(C)Tsubasa Kato – Inspire Search Corporation 1/26/2023 16:17PM
#Referenced: https://qiskit.org/documentation/stubs/qiskit.circuit.random.random_circuit.html
from qiskit import QuantumCircuit, assemble, Aer
from qiskit.circuit.random
ChatGPTにいろいろな呪文を唱えて、魔法を詠唱してもらった for Python.
# ChatGPTでいろいろなパターンのコードを書いてもらう for Python.
タイトル通りです。ChatGPTにいろいろな呪文を唱えて(指示を与えて)、魔法を詠唱(コード生成)してもらった。
なお、本記事の構成は、「呪文>魔法詠唱(サンプルコード)>補足説明」となっています。## 簡単なスクレイピング 1
まずは、ありきたりなスクレイピングに関する魔法を詠唱(コード)してもらった。
簡単な魔法がどれくらいなのか?精度も知りたく、以下の内容で呪文をかけてみた。はじめの呪文(指示)は次の通りです。
“`:呪文
pythonコードで、特定のサイトをスクレイピングして、
テーブルタグのデータをexcelに落とし込み、各データのテーブルを作成するコード書いて
“`
魔法詠唱
“`Python3:魔法詠唱
import requests
from bs4 import BeautifulSoup
import pandas as pd# スクレイピング対象のURL
url = “https://example.com”# requestsを使用してHTMLを取得
re
PythonでRaspberryPiで撮影したカメラ映像をリアルタイム転送する
# はじめに
本記事は備忘録の一部です。
![Fig.1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629378/e2b80505-44b4-feff-715f-e41c0429a513.jpeg “[Fig.1]カメラを搭載したRaspberryPi4”)**監視カメラ**でも作ろうかと過去のコードをぴっぱり出したところ、コピペでは動作しなくなっていたので、最近の仕様変更に合わせたコードへの修正となります。
具体的には、**RaspberryPi**で取得したデータをほかのデバイス(Pythonが動くもの)で表示させるというものになります。
本コードは拡張性が高く、**リアルタイム映像をAI・機械学習等の処理**にかけるときに別のサーバー上で処理ができるので大変重宝しております。**簡易監視カメラ**にもなりますし、**Python**で書かれているのでNAS等に動画を保存しておくことも可能です。可能性は無限大と言えますね!
中華のIPカメラでやれよって話ですけどね。
# 目標
![Fid.
ハノイの塔を解くプログラム python3
再帰アルゴリズムで、ハノイの塔を解くプログラムです。
`$ chmod +x hanoi.py`で実行権限を付けて実行して下さい。
`’./$ hanoi.py`で、n段のハノイの塔を解きます。 “`hanoi.py
#!/usr/bin/python3
import sysdef hanoi(n, from_, to, work):
if n > 0:
hanoi(n-1, from_, work, to)
print(“move #%d disk from %s to %s” % (n, from_, to))
hanoi(n-1, work, to, from_)hanoi(int(sys.argv[1]), ‘Left’, ‘Center’, ‘Right’)
“`
# 実行結果
“`
$ hanoi.py 3
move #1 disk from Left to Center
move #2 disk from Left to Right
move #1 disk from Center to Right
move
AtCoderの暖色コーダ(黄・橙・赤)はどれだけの速度でコードを書く? ユーザの解答時間を色別で集計してみた
[Supership](https://supership.jp/)でVPoEをしている名畑です。2023年冬アニメの[テクノロイド オーバーマインド](https://techno-roid.com/anime)を見ていて、その内容から[うたプリ](https://www.utapri.com/)を思い出していたら、[上松範康](https://twitter.com/agematsu)さんの作品だと後から知りました。ストーリー展開が予想外で面白いです。
:::note info
AtCoderについて調べてみたシリーズの過去記事
– [そもそもAtCoderとはどんなものか](https://qiita.com/nabata/items/44fa3995e476b12b9860)
– [誕生年毎のアクティブユーザ数](https://qiita.com/nabata/items/75407e48c7ca8de8a4a4)
– [アクティブユーザの世代別国と地域](https://qiita.com/nabata/items/28b5572978ee4abb0126)
– [プログ
久しぶりにpython書いたら複数文字列の演算子を使った条件式の書き方わからんくなってた
# 条件式 and,or
Pythonを書く時、論理演算子として**and**や**or**を使って、条件式を書くことがある。(JavaScriptやCでは __&&__ や __||__ で表現する)
有名なもので、[FizzBuzz問題]()の***3の倍数かつ5の倍数***を表現するときに**and**が使われることが例に挙げられる。# 複数文字列がinで囲まれた大きな文字列に含まれるかどうか
次のような場合を考える
“`python:example1.py
if “abc” or “def” in “ghi”:
print(“True”)
else:
print(“False”)>>> True
“`
直感的には、”abc”も”def”も”ghi”には含まれていないため、*False*が返ることが期待されますが、実際には、予想と反する*True*が返ってきます。これがなぜかというと、pythonでは次のように解釈されているためです。
“`python:example2.py
if “abc” or (“def” in “ghi”):
…
`
Azure Web Appsを使ってみてなんか気になったところ
Azure Web AppsでFlaskデプロイしたのですが、その仕組みやらなんやらがわからず混乱しているという記事というかメモです。
### 1なぜコマンドプロンプトやPowerShellでコマンド入力せずに動くのか。
私はVScodeを使ってPythonやらFlaskやらのフレームワークを使ってコードを書いています。そのときに、コマンド入力したり、Pathを入力することで、実行しています。
しかし、AzureWebAppsでは主に
・Azure Portalで設定し、
・Githubと連携し、
・Github Actionsのワークフローが自動設定され、
・デバッグすることで、
なぜか動いているんです。
コマンド入力することでファイルが動くことを当然視していた私にとって、これは非常に奇妙に映るわけです。設定することで動くPaaSやホスティングサービスの例はあります。
例えば、Heroku。HerokuにはProcfileという「最初にこれを設定して、あれを動かして」といった具合に手続きをHerokuに伝えるファイルがあるようです。調べてみるとAzureWebAppsにもあ
再帰によるpaint関数
指定されたバックグラウンド色の部分を、指定された色で塗りつぶすpaint関数です。
グラフィックスにはpygameを使っています。
このプログラムでは、塗りつぶし領域が広いと、すぐRecursionErrorが起きてしまうので、改良が必要です。“`paint.py
#!/usr/bin/python3
from pygame.locals import *
import pygame
import sys
import os
import random
sys.setrecursionlimit(20000)
xsize=400
ysize=400
pygame.init() # Pygameを初期化
screen = pygame.display.set_mode((xsize,ysize)) # 200×200の画面を作成
pygame.display.set_caption(“paint” ) # タイトルを作成# ペイント関数
def paint(p,bc,pc):
if screen.get_at(p)[:3]==bc:
s
Rembgでレシート画像を切り抜き
# 目的
– レシートと背景が写った写真からレシートをくりぬきたい
– Rembgってすごいらしい
– なんか画像処理っぽいことしたい# 前回のあらすじ
https://qiita.com/kazzzu/items/d9684319d2d0b64d6f31
https://qiita.com/kazzzu/items/ebaa3f42c91d9ade3ee5
今回はrembgをやってみたいと思いました。原理とか理論とかは参考文献を参照してください。
最近のDeepleaningはすごいですね。恐ろしく簡単に背景消せるんだ、と思いました。# 環境
– Windows11 Home
– VSCode
– Python3.10
– pip
rembg# 本編
参考:https://github.com/danielgatis/rembg
https://dev.classmethod.jp/articles/python-rembg/
## Rembgをpipでインストールします
“`
pip install rembg
“`
## プログラムを作成します
Windowsとpython3.11で”delimiter” must be a 1-character stringというエラー
次のようなプログラムをwindowsで実行
“`diff_python
import csvraw_data_path = ‘hoge.txt’
with open(raw_data_path) as raw_data_file:
reader = csv.reader(raw_data_file, delimiter=’¥t’)
for row in reader:
print(row[0], row[5],row[6])
“`
その結果タイトルのエラーが発生
“`
reader = csv.reader(raw_data_file, delimiter=’¥t’)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: “delimiter” must be a 1-character string
“`
原因は`delimiter`の引数が`¥t`になっていること。`delimiter=’\t’`にすることで解決。単なるコピペには注意
Pythonで、我ながら下らないコードを書いてしまった(学習まとめ?)
ふとある時、カタカナ単語を五十音順(≒辞書配列順)にソートしてくれる機能が欲しくなってコーディングし始めました。
しかし、よくよく調べてみたら、Pythonの配列に「sort」メソッドがあるではありませんか・・・(笑)。
とんだ「再発明」をしてしまいました・・・(泣)。
でもせっかくなので、自分で書いたコードをQiitaの記事にしてしまおうと考えたワケです(爆)。
よかったら、ご自分の環境で実行して(みるまでもないか)・・・。
(どうせ、「sort」メソッドとほとんど結果は変わらないし)。
もしも、Python標準の「sort」メソッドと挙動や結果が違う部分があったら報告してみてください。
(多分、変更しませんが・・・)。
~~~python:kana_sort.py
# coding: utf-8#各モジュールの読み込み
import sys
import numpy#ソート処理する各文字列の最大の長さ
#(実際には、配列に1文字ずつ格納するので「1行分の要素数」と等価)
CHRS_MAX_NUM = 10#日本語のカナ文字から一意の数値へと変換するための辞書
DDAによる線分描画
DDA(デジタル微分解析器)による線分の描画をします。
整数演算のみで描画ができるので、アセンブラに落とすときなど便利です。
Pythonで書かれています。グラフィックス・キー入力はpygameを使っています。“`line.py
#!/usr/bin/python3
from pygame.locals import *
import pygame
import sys
import osdef draw_line(screen,p1,p2):
(x1,y1)=p1
(x2,y2)=p2
dx,dy =x2-x1 if x2>x1 else x1-x2 , y2-y1 if y2>y1 else y1-y2
sx,sy = 1 if x2>x1 else -1 , 1 if y2>y1 else -1
if ( dx >= dy ):
e = -dx
for i in range( dx+1 ):
set( screen,(x1,y1) )
x1 += sx
e += 2*d
InfluxDB v2: API の使い方 (Python3)
関連ページ
[InfluxDB v2: API の使い方](https://qiita.com/ekzemplaro/items/6963c9fa714fb47f4d54)## 準備
環境設定ファイルの作成
“`text:.env
bucket = “dbtest”
org = “ekzemplaro”
token = ‘***-_nfenN6m5LhKUXNcrQ_H3dZSQo2pVpyyJg6nskHEwcl6bMsjc1vyzY9b11hSyGiQMOg==’
url=”http://localhost:8086″
“`## データの書き込み
“`py:api_insert.py
#! /usr/bin/python
#
# api_insert.py
#
# Jan/24/2023
#
# ——————————————————————
import os
import sys
import json
import requests
from dotenv imp
【AtCoder入茶記事】入茶しました!
# 1.挨拶
どうもこんにちは、TsubakiMintです。
AtCoderを初めて一つ目の目標としていた入茶を達成しましたので、入茶記事というものを書きます。# 2.自己紹介
– ハンドルネーム:TsubakiMint
– 所属:地方国立大の理学部数学科学部生
– 使用言語:Python3
– 競プロを始めた時期:2022年12月# 3.競プロを始めた理由
僕は実は競プロを始めるまでプログラミングが全くできませんでした。具体的には「大学のJavaの授業で途中から分からなすぎてバックれ、単位は貰えたが最低評価」、「大学のCの授業で同様の理由でバックれ、落単」くらい酷かったです。
このままではよくないと思い、プログラミングの勉強を真面目にやろうと思いました。しかし、ただ勉強するだけでは飽きてしまうと思いました。勉強の成果がコンテストの結果として返ってくる競プロはうってつけだったのです。
また、言語は直感的に書ける(と調べたら書いてあった)Pythonを選びました。# 4.入茶するまで
## 4.1.コンテスト初参加まで
– 言語はPythonを使用すると決まったので、PC上に
自然数ローマ数字変換 Python3
自然数とローマ数字の変換をします。
“`romanumber.py
#!/usr/bin/python3
import sysTABINT=[1000,900,500,400,100,90,50,40,10,9,5,4,1]
TABROMA=[“M”,”CM”,”D”,”CD”,”C”,”XC”,”L”,”XL”,”X”,”IX”,”V”,”IV”,”I”]
ERRPAT=[‘DD’,’LL’,’VV’, # 500,50,5 がダブらないように
‘CMC’,’CDC’,’XCX’,’XLX’,’IXI’,’IVI’,
#CMCM,CMCのようなエラーパターンは’CMC’にまとめてある
‘DCD’,’LXL’,’VIV’] # 515のパターンdef toint(s):
s=s.upper()
for i in ERRPAT:
if (i in s): return(-1)
a=0
i=0
j=0
while(s):
if (s.startswith(TABROMA
unittestの使い方について個人的メモ
# tl;dr;
* unittestはPythonが公式に用意しているユニットテストフレームワーク
* 初めてテストを使ったが、大規模なコードになればなるほどテストが重要だと思うので、今後は、並行してテストを書いていくようにしたい。
* testを先に書いてから開発をする手法もあるらしい DRR?
* テストはテストするmoduleとディレクトリを分ける
* argumentを渡すようにすることで、argparaseをテストすることもできるofficial ref.
https://docs.python.org/3/library/unittest.html# Things learned
#### 1. test moduleの場所について
unittestはテストしたいmodule内に直接記載するケースもあるが分けるケースが多い。それは以下のような理由からである。(公式Ref抜粋)
そのため今回はtestsフォルダを直下に作り,そこにtest.pyを作成した
> * The test module can be run standalone from the comm