Python関連のことを調べてみた

Python関連のことを調べてみた

学習レポート: 深層学習(Day 2)

# 深層モデルのための学習テクニック
– 中間層を増やした時に生じる問題への対応策

## 勾配消失問題
– 誤差逆伝播法では、計算結果(=誤差)から微分を逆算することで、不要な再帰的計算を避けて微分を算出できる
– ただし、中間層が増えると、勾配消失問題によってうまく行かないケースが出てくる
– 勾配消失問題: 誤差逆伝播法が下位層(入力層に近い層)に進んでいくに連れて、勾配がどんどん緩やかになっていくため、勾配降下法による更新では下位層のパラメータがほとんど変わらず、訓練は最適値に収束しなくなる
– 微分の連鎖率において、小さい(1未満の)値を複数回かけていくと、結果の勾配が0に近付いていってしまう
– シグモイド関数の微分結果は最大でも0.25
– 勾配消失の解決法
– 活性化関数の選択
– ReLU関数
– 今最も使われている活性化関数

– $ f(x) = \begin{cases} x   (x > 0) \\\\ 0   (x \leqq 0) \

元記事を表示

jsonで記載したクラス関係から一発でオブジェクトを生成しようとした話

「アドカレの記念すべき1日目をこんな内容でいいのだろうか」
「質より量が大事なのです」

未経験からIT業界に入って2年目、まだまだ知らないことだらけですがなんやかんやで頑張っています。

さて、今回私はこういう勉強をしました。

– `json.load`を使ってjson→pythonへデコードしよう
– `dict`を挟まず一発でオブジェクトを作成しよう

順を追って話しましょう。
jsonでこんな設定ファイルを作っていたとします。
~~~cfg.json
{
“class”: “Hoge”,
“name”: “hoge1”,
“hugas”: [
{
“class”: “Huga”,
“name”: “huga1”
},
{
“class”: “Huga”,
“name”: “huga2”
}
]
}
~~~
`Hoge`が`Huga`を複数持つ設定です。
このファイルに書かれたクラス情報

元記事を表示

Cloud Run + Cloud SQL、セットアップ

## はじめに

この記事は、
 [Cloud Run + Cloud SQL, setup
](https://www.youtube.com/watch?v=cBrn5IM4mA8)という動画を参考に、『実際にやってみた』という記事になります。

## この記事で実施する事。
– `Cloud SQL` インスタンス を作成。
– `Cloud Run Service` をデプロイする。
– `Cloud Shell` を使用して、`Cloud SQL` インスタンスに接続する。
– `テーブル作成` と `データ挿入`
– `Cloud Run` にデプロイされたアプリを動かす。
– `Cloud SQL` にデータが挿入されたかを確認する。

以下はその必要となる大まかな構成になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952807/44814f53-8852-5698-87c7-f8689ca791c7.png)

## Google Cloud SQLにつ

元記事を表示

SAM (Segment Anything Model)の基礎とGISで使う方法

# 概要

機械学習初心者がSegment Anything Model (SAM)をGISで応用的に使いたかったのでその概要や使い方をメモしておく。
SAMを使うと,ラスターがベクターにできる……?!

# Segment Anything Modelとは

Meta社が開発した,画像中の物体を分類するモデル。

https://segment-anything.com/

公式ウェブサイトはキャッチ―で分かりやすいのだけれど,下記arXivの論文を確認してみることにする。全部読もうかと思ったけど,とりあえずイントロを読めば良さそうなのでイントロだけ。

https://arxiv.org/abs/2304.02643

# Segment Anything論文の解説

## Introduction [^intro]

[^intro]: とりあえずイントロだけ。

### 背景~ゴール

– 大規模言語モデルはすごいよね。*zero-shot*とか*few-shot*で,訓練に使った以上の汎化性能が発揮されてるよね。こういうのを基礎モデル(*foundation model*)と

元記事を表示

Pip install のログ

どこからモジュール取得しているかがわかる。

“`
pip install -r requirements.txt -v –log pip.log
“`

“`log:pip.log
2023-11-24T10:40:50,423 Using pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
2023-11-24T10:40:50,424 Defaulting to user installation because normal site-packages is not writeable
2023-11-24T10:40:50,523 Created temporary directory: /tmp/pip-ephem-wheel-cache-vbxlp_ex
2023-11-24T10:40:50,524 Created temporary directory: /tmp/pip-req-tracker-7pl32zza
2023-11-24T10:40:50,524 Initialized

元記事を表示

ChatGPTとPythonで学ぶ BERT:1. 感情分析編

皆さんこんにちは。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ BERT」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

こんにちは!今日はBERTについてお話することになりましたね。BERTはNLP(自然言語処理)領域において革新的な手法で、Googleが2018年に発表しました。BERTはBidirectional Encoder Representations from Transformersの略で、一般的に英語を中心に広範なタスクに対して最先端のパフォーマンスを達成しています。それでは、どこから始めましょうか?

### **user**:

BERTについて学ぶためのPythonのコードを書いてください。

### **assistant**:

PythonでBERTを使うことは可能ですが、その前に簡単な事前条件を知っておく必要があります:

1. ライブラリ: `transformers`と`torch`というライブラ

元記事を表示

まちがいさがし(pythonでAA)

以下の「**鬱**」の中、どれかが「**欝**」だよ、さがしてみよう。

ヒント:この画像は50×50文字。コードが読めれば見当がつくよ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3555292/12bb7340-7601-5e09-6e96-e0eff8f086ae.png)

## 以下のコードで書きました
“`python
from PIL import Image, ImageDraw, ImageFont
import numpy as np

size = 50 # 画像サイズ
ofs_y = 55.0 / 256 # オフセット(フォントごとに異なる)
font = ImageFont.truetype(‘Koruri-Bold.ttf’, size)

img = Image.new(‘1′, (size, size), color=’white’)
draw = ImageDraw.Draw(img)
draw.text((0, -ofs_y * size),

元記事を表示

Pythonで「ブール値(True、False)の使い方」の動作を確認してみた

# 概要

Pythonで「ブール値(True、False)の使い方」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/python/num/index7.html

# 実装

以下のファイルを作成しました。
“`sample.py
flag = True
if (flag):
print(“Succeeded”)
else:
print(“Failed”)

print(True + 8)
print(False + 2)

print(str(True) + ” is 1″)
print(str(False) + ” is 0″)
“`

以下のコマンドを実行しました。
“`
$ python3 sample.py
Succeeded
9
2
True is 1
False is 0
“`

# まとめ

何かの役に立てばと。

元記事を表示

生物系の修士1年がKaggleに参加してみた

生物系の修士1年がKaggleに参加してみました。
Kaggleを知ったきっかけは、就活中のインターンです。
私は研究にプログラミングを使っていますが、専攻は生物系のため、まわりにプログラミングに詳しい人はいません。
夏に情報系の方が多く参加するインターンに参加することができ、情報系の方と話す中で、KaggleやSIGNATEなどのデータ分析コンペがあることを知りました。
Kaggleに興味はあったのですが、参加するのは後回しにしてしまっており、ようやく登録しました。
この記事では、Kaggle登録から、チュートリアルコンペ参加までの流れを紹介します。

下記の記事を参考にしました。

https://qiita.com/Isaka-code/items/3935cdb2a0bda331e07c

# Kaggle登録
下記の記事を参考にしました。

Kaggleとは?-参加する意味や始め方をわかりやすく紹介

まずKaggleのサイトにアクセスします。
https://www.kaggle.com
![スクリーンショット 2023-11-24 1.03.35.png](h

元記事を表示

QiitaのAPIを使って集計結果をExcelへ出力する。

# はじめに
自分のQiita記事のview数など集計したく、Qiitaで提供されているAPIをPythonで制御してみた。Excelで下表みたいな感じに出力されることを目標とする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299802/ad9cc687-650e-29c4-e4a6-e0fa998446ac.png)

**Qiita API**

https://qiita.com/api/v2/docs

# 目次
+ [Qiita APIとは](#qiita-apiとは)
+ [PythonでQiita APIを使う](#pythonでqiita-apiを使う)

## Qiita APIとは
+ Qiita APIはHTTPのメソッドでアクセスする。対応しているメソッドはGET、POST、PUT、PATCH、DELETEの5種類。APIでやり取りするデータのフォーマットはJSON。今回はデータ収集のためにAPIを使うので、GETメソッドを使う。

HTTPメソッド|内容

元記事を表示

SwitchBot API 1.1 を使用して、温湿度計のデータを取得する

# はじめに
実際に自分で集めたデータを用いて、機械学習の予測モデル構築をしたい。
そのための、第一歩としてswitchBot APIを用いて自室に設置された温湿度計のデータを取得することにしました。
[switchBot 室温度計](https://www.switchbot.jp/products/switchbot-meter)
また、機械学習をpythonで行うことを考慮し、pythonを使用しswitchBot APIを叩きました。

# 動作環境
– Dockerfile
“`dockerfile
FROM python:3.11

COPY requirements.txt .

RUN pip install -r requirements.txt

WORKDIR /app

COPY ./app .
“`
– requirements.txt
“`text
certifi==2023.11.17
charset-normalizer==3.3.2

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その30 その他の座標を表すデータ構造

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/392fa297ba9e9108ffcb

# 実装の進捗状況と前回までのおさらい

## 〇×ゲームの仕様と進捗状況

1. `正方形で区切られた 3 x 3 の 2 次元のゲーム盤上でゲームを行う`
2. `ゲーム開始時には、ゲーム盤のすべてのマスは空になっている`
3. `2 人のプレイヤーが遊ぶゲームであり、一人は 〇 を、もう一人は × のマークを受け持つ`
4. `2 人のプレイヤーは、交互に空いている好きなマスに自分のマークを 1 つ置く`
5. `先手は 〇 のプレイヤーである`
6. __プレイヤーがマークを置いた結果、縦、横、斜めのいずれかの一直線の 3 マスに同じマークが並んだ場合、そのマークのプレイヤーの勝利とし、ゲームが終了する__
7. __すべてのマスが埋まった時にゲームの決着がついていない場合は引き分けとする__

仕様の進捗状況は、以下のように表記します。

*

元記事を表示

Processing上でシリアルポート一覧を取得したい

Arduinoを使用してスクリプトの書き込み時に書き込み先のシリアルポートを選ぶ必要がある。
シリアルポートって一覧で出せるのか試してみた。

# シリアルポートの一覧を取得する目的
・適切なシリアルポートを選択することができるようになるため
  M5Stackからの情報を確認するためには、PCにシリアルポートを指定する必要がある
・シリアルポートの一覧を取得できるようになれば、Bluethoothシリアルにも応用が可能であるため

# 前提
・Processingで実行
・シリアルポートを使う端末を所持している

# スクリプト
“`ruby:sirialport_all.pde
import processing.serial.*;

Serial port;

void setup() {
String[] ports = Serial.list();

for(int i =0;i

元記事を表示

複数のLLMモデルファイルを保存しておいて、いちいちHuggingFaceからDLしなくて済むようにする

## 環境
– Macbook Pro(M3チップ)
– Visual Studio Code
– pyenv
– poetry

## 概要
複数のLLMをいちいちHuggingfaceからDLしなくて済むように、`models`ディレクトリにモデルファイルとトークナイザのファイルを置きつつ、作業用の`work`ディレクトリからモデルファイルを呼び出せるようにしたい
“`
├── models
│ ├── model1
│ │ ├── model
│ │ │ ├── config.json
│ │ │ ├── generation_config.json
│ │ │ └── model.safetensors
│ │ └── tokenizer
│ │ ├── special_tokens_map.json
│ │ ├── tokenizer.config.json
│ │ └── tokenizer.json
│ └── model2
│ ├── model

元記事を表示

AtCoder初心者 DailyTrainingメモ 2023/11/23

# ABC239 A-問題
https://atcoder.jp/contests/abc239/tasks/abc239_A

![239A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547298/edb15042-0c81-fa94-3d63-ef3381737a5f.png)

**ポイント**
Pythonで平方根を取り扱うときは、math をインポートして math.sqrt() を使う

““Python:239A.py
import math,sys,datetime,random,glob,os,re,bisect,itertools
import numpy as np

# 入力
H = int(input())

ans = (12800000+H) * H

print(math.sqrt(ans))
““

# ABC288 B-問題
https://atcoder.jp/contests/adt_easy_20231122_2/tasks/abc288_b

!

元記事を表示

多重比較におけるTukey法とBonferroni法とBH法の比較

3つ以上のグループの全ての組み合わせを比較するとき、Tukey法、Bonferroni法、Benjamini-Hochberg法 (BH法) の結果がどれくらい違うのか数値計算で調べてみました。

結論から書くと、調べた条件下で陽性判定の出やすさは、補正なし > BH法 > Tukey法 & Bonferroni法でした。Tukey法とBonferroni法はほとんど同じでした。

## 比較条件

| 項目 | 値 |
|-|-|
| グループ数 | 3, 4, 5, 6 |
| 各グループのデータ点の数 | 全て100 |
| 分布 | 正規分布|
| 分散 | 全て1 |
| 平均 | 各グループに0からdまでを等間隔に割り当てる、dは0から1まで |
| サンプリング法 | ランダムでなく、分位関数から等間隔に選択 |
| 有意水準 or FDR | 0.05 |

## 結果

![tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2787764/38c102af-b100-e69c-48

元記事を表示

【Python】csv.DictReaderで遭遇したエラー2件の解決方法 (KeyError / invalid literal for int() with base 10)

# 概要
Pythonの`csv.DictReader`オブジェクトを利用していたら以下の二つのエラーに遭遇しました。
どちらも解決できたので、こちらで紹介します。

– `KeyError: ‘XXXX’`
– `ValueError: invalid literal for int() with base 10: ‘XXXX’`

## 修正前コード

“`py
import os
import csv

csv_directory =’./csv’

for filename in os.listdir(csv_directory):
if filename.endswith(‘.csv’):
csv_file_path = os.path.join(csv_directory, filename)

with open(csv_file_path, newline=”, encoding=’utf-8′) as csvfile:
csv_reader = csv.DictReader(csvfi

元記事を表示

pythonで、リストの特定の要素のインデックスを取得する

リストの最大値、2番目に大きい数、3番目に大きい数のインデックスを
取得するプログラムです。
このプログラムでは、重複するデータに対しては、
対応していないため、今後改善する予定です。

使用した関数は以下の3つです。
・set():一意性と順序を持たないデータ構造を作る
・sorted():数値を大きい順に並び変える
・index():指定のインデックスを返す

“`python:get_index.py

import numpy as np

def get_index(num):
new_ls = set(list)
result = sorted(new_ls)[-num]
index = list.index(result)
return index

list = [1,2,30,4,5,60,7,8,9,10]
print(f”元のリスト>>{list}”)
print(f”最大値60のインデックス>>{list.index(60)}”)
print(f”2番目に大きい30のインデックス>>{list.index(30)}”)

元記事を表示

Pythonで「文字列を数値に変換して数値と演算する」の動作を確認してみた

# 概要

Pythonで「文字列を数値に変換して数値と演算する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/python/num/index6.html

# 実装

以下のファイルを作成しました。
“`sample.py
num1 = “25”
num2 = “3.155”
print (18 + int(num1))
print (4.5 + float(num2))
“`

以下のコマンドを実行しました。
“`
$ python3 sample.py
43
7.654999999999999
“`

# まとめ

何かの役に立てばと。

元記事を表示

AnacondaでGPU対応のTensorFlowをインストールする簡単な方法

## はじめに
本記事は、Anacondaを使用してGPU対応のTensorFlowを導入する際に、お手軽にインストールする方法について解説します。

本記事の前提知識は、以下の2点です。
– GPUドライバの適切なインストールされている(`nvidia-smi`が動作している)
– Anacondaがインストールされていてる

なお、筆者の実装環境は`Ubuntu 22.04`です。

## 最初に確認しておくこと

### `nvidia-smi`が認識できるかチェック

以下のコマンドでGPUドライバが認識できるかを確認します。
“`
$ nvidia-smi
Wed Nov 22 20:04:05 2023
+—————————————————————————————+
| NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2

元記事を表示

OTHERカテゴリの最新記事