趣味のPython・深層学習

中級者のための実装集

Python基礎

スコープ: Pythonのスコープの基礎

はじめに プログラミングにおいて、「スコープ」とは変数や関数の有効範囲のことを指します。Pythonでは、スコープの概念を適切に理解することが非常に重要です。スコープを理解すれば、変数や関数を適切に使用できるようになり、バグの発生を防ぐことができ…

property, getter, setter 基礎

Pythonのプロパティ、ゲッター、セッターの基礎から応用まで Pythonにおいて、プロパティ、ゲッター、セッターは、クラスのデータ属性をカプセル化し、適切にアクセスやデータの検証を行うための仕組みです。この仕組みを適切に使用することで、クラスのデー…

抽象クラスの基礎:Python abstractmethod

Pythonの抽象クラスについて 抽象クラスとは 抽象クラスとは、共通の機能を持つクラスのベースとなるクラスです。抽象クラスには実装されていないメソッドが含まれており、これらのメソッドは具象クラスで実装されなければなりません。 抽象クラスは、インス…

Pythonで学ぶSOLID原則

PythonでSOLID原則を学ぶ SOLID 原則は、ロバート・C・マーティンによって提唱されたオブジェクト指向プログラミングの5つの原則です。この原則に従うことで、コードの柔軟性、保守性、拡張性が向上します。Pythonでもこの原則を適用することができます。 単…

nn.ModuleListを解説してみる

PyTorchのnn.ModuleListとは? nn.ModuleList は、PyTorchのニューラルネットワークモジュールの一部であり、複数の nn.Module オブジェクトをまとめて保持するためのコンテナです。これを使うことで、モデル内で複数のサブモデルを簡潔に管理できます。 な…

1分で見るPythonicなコード例

本ブログでは、Pythonコードをより簡潔で読みやすく、かつ効果的に書くための3つのPythonicなテクニックを紹介します。これらの方法はリスト内包表記、条件式の値の交換、そして辞書内包表記です。 1. リスト内包表記を使用して平坦化する # リスト内包表記…

辞書のアンパック

Pythonでは、関数に引数を渡す方法が様々ありますが、その中でも辞書をアンパックして引数として渡すことは便利なテクニックです。この記事では、辞書のアンパックを使った引数の渡し方について詳しく解説します。 辞書のアンパックとは? 辞書のアンパック…

Pythonディスクリプタの基本: カスタム属性の作成と活用

はじめに Pythonにおいて、ディスクリプタは強力なオブジェクトの属性を制御するための仕組みです。この記事では、ディスクリプタの基本的な概念と、実際の利用例について詳しく解説します。サンプルコードを交えながら、どのようにディスクリプタを定義し、…

ジェネレータ関連(yield, __init__, __next__)の初心者向け解説

ジェネレータの定義 ジェネレータはイテレータを作成するための特別な関数です。(ジェネレータによって作成されたイテレータをジェネレータイテレータとも呼びます。) yieldによるジェネレータ実装 from typing import Generator def simple_generator() -…

デコレータ@contextmanagerを3stepで理解する。

ステップ1: try-finally を使用する例 まず、ファイルを開いて処理を行う際に、try-finally ブロックを使用する例を見てみましょう。これにより、ファイルが正しくクローズされることが保証されます。 Copy code file_path: str = "example.txt" try: file: …

Pythonのpathlibモジュールを使ってパスを効果的に操作する

Pythonにおいて、ファイルパスやディレクトリの操作は不可欠です。pathlibモジュールは、これらの操作をより簡潔かつ直感的に行うための優れた手段を提供しています。以下に、なぜpathlibを使うべきなのか、そのメリットについて詳しく解説します。 1. 直感…

Pythonにおける@propertyのメリット

Pythonにおけるpropertyは、オブジェクトのアトリビュートにアクセスする際に利用される機能で、カスタムな取得や設定のロジックを組み込むことができます。この記事では、propertyの使用方法と通常の属性アクセスとの違いに焦点を当てます。 1. Propertyと…

Pythonの型アノテーション(型ヒント)の基礎

Pythonの型アノテーションは、コードを読みやすくし、開発プロセスを効果的にサポートします。以下に、いくつかの例を詳しく見てみましょう。 1. シンプルな型アノテーション def add_numbers(a: int, b: int) -> int: return a + b この例では、add_numbers…

特殊メソッド: 深層学習で学ぶ__call__メソッド

深層学習モデルを構築する際、Pythonの特殊メソッドはパワフルなツールとなります。その中でも、callメソッドはカスタムレイヤーやカスタムモデルの実装において特に重要です。この記事では、callメソッドの魅力を深層学習の文脈で解説し、具体的なサンプル…

setattr関数、getattr関数の基礎

組み込み関数のsetattr関数、getattr関数はオブジェクトを操作する上でとても役立ちます setattr 関数: setattr 関数は、オブジェクトの属性に値を設定するための関数です。 def set_attribute(obj: object, attr_name: str, value: any) -> None: """ オブ…

Attrdict : Pythonの辞書の値を属性アクセス

PythonのAttrDict: 辞書の属性アクセス 本記事では、Pythonでよく使われるデータ構造の一つである辞書(Dictionary)を、AttrDictクラスを使用することで属性アクセスを可能にする解説をします。AttrDictは辞書を拡張し、属性アクセスを提供することで、コー…

Pythonのリスト・辞書における内包表記

内包表記の良い覚え方を教えてください! この記事を読んで必ずマスターしよう 目次 目次 はじめに リスト内包表記の基本 リスト内包表記の応用 辞書内包表記の基本 辞書内包表記の応用 まとめ はじめに この記事では、内包表記の基本と応用に焦点を当てて学…