Wissensnotizen erforderlich, um das Python-Framework zu verstehen

Ich werde aufschreiben, was ich durch das Lesen eines Python-Buches gelernt habe

Ich lerne Python. Die Bücher, die Sie gelesen haben, finden Sie im folgenden Blog-Beitrag.

10 empfohlene Bücher zum Erlernen von 2020 Python und ein Memo an Qiita über das, was Sie gelernt haben

Inhaltlich konzentriert sich dieser Artikel auf das Wissen, das zum Verständnis der in Python geschriebenen Frameworks erforderlich ist (insbesondere Deep-Learning-Frameworks wie TensorFlow und PyTorch).

Das Folgende ist eine Voraussetzung.

――Wir sind ein ewiger Anfänger. Bitte sei nett

Derzeit planen wir, es nach Bedarf hinzuzufügen und zu ändern.

Gesamtgeschichte

In Python dreht sich alles um Objekte

Alles in Python scheint ein Objekt zu sein. Ich bin objektorientiert in der Atmosphäre, daher verstehe ich die Bedeutung nicht wirklich.

Sogar die Klasse scheint ein Objekt zu sein, aber ich bin mir nicht sicher, was das bedeutet. Ich bin mir nicht sicher, ob ich Folgendes lese.

Visueller Leitfaden für Python-Objekte und -Klassen - Alles ist ein Objekt

Im Moment kann ich Programme lesen und schreiben, auch wenn ich sie nicht verstehe, aber wenn ich das bedenke, habe ich das Gefühl, dass ich eines Tages erleuchtet werde, also schreibe ich es zuerst.

Es ist wichtig, das offizielle Dokument zu lesen

Es scheint offensichtlich, aber ich denke, viele Leute haben die offizielle Dokumentation nicht gelesen (sorry, ich habe nicht zu viel gelesen).

Ich habe einige Python-Bücher gelesen und festgestellt, aber es ist wichtig, die Dokumentation zu lesen, da die Bücher auch völlig falsch sind und einige Teile weggelassen werden, um Anfängern das Verständnis zu erleichtern. .. Es gibt auch Japaner.

Python 3.8.1-Dokumentation

Ich denke, es ist schwierig, alles von Ecke zu Ecke zu lesen, aber es scheint gut, einen kurzen Blick auf PEP8 zu werfen, das die Codierungsregeln beschreibt.

PEP 8 -- Style Guide for Python Code

Klassenbeziehung

In Bezug auf die spezielle Methode __hoge__

Was ist der Ausdruck "hoge", den Sie oft sehen? Wenn Sie den folgenden Artikel lesen, werden Sie glücklich sein.

Auch Python-Anfänger möchten __hoge__ verwenden! ~ Verwendung spezieller Attribute und spezieller Methoden ~

Verwenden Sie die Instanz wie eine Funktion in der Methode __call__

Sie können wie folgt schreiben.

class Function:
    def __call__(self, x):
        return 2*x

f = Function()
print(f(2))
# 4

Das? Ist das eine Funktion? In der Methode? Wenn Sie denken, möchten Sie vielleicht __call__ überprüfen.

Dies ist ein Bild, das im Rahmen des Deep Learning häufig verwendet wird.

Datenstruktur

Liste / Taple / Wörterbuch / Set

Die folgenden vier werden verwendet, wenn mehrere Daten in Python verarbeitet werden.

--Liste: [] --Taple: () --Set: {} oder set ()

Wenn Sie ein einfaches Programm selbst schreiben, reicht es normalerweise aus, eine Liste zu verwenden, aber im Deep-Learning-Framework wird natürlich häufig etwas anderes als eine Liste verwendet. Insbesondere werden Wörterbücher verwendet, um die Bezeichnungen von Lehrerdaten mit Dateien zu korrespondieren.

Wenn Sie den Code lesen oder selbst verwenden, müssen Sie verstehen, wie sich diese unterscheiden. Wie ich später erläutern werde, beachten Sie bitte, dass die Substanz des Taples tatsächlich ein Komma und keine Klammer ist.

Referenz: [Python] Unterschiede zwischen Listen, Taples, Wörterbüchern und Mengen

Es ist ein Komma, ein Taple zu machen (Klammern können weggelassen werden, Kommas können jedoch nicht weggelassen werden)

Ein Taple mit einem Element sollte wie folgt geschrieben werden:

tuple = (1, )
print(tuple)
# (1,)

Im Gegenteil, in erster Linie ist Taple mit nur einem Komma in Ordnung, wie unten gezeigt.

tuple = 1,
print(tuple)
# (1,)

Im Einführungsbuch wird die Liste oft nur als "[]" und der Taple als "()" geschrieben. Es war also ein Schock, einen Taple mit einem Komma (",") zu erstellen. ..

Darüber hinaus verfügt Python über eine Methode namens Unpack Assignment, die Elemente erweitert und mehreren Variablen zuweist (im folgenden Code die Position von a, b = b, a), die sich jedoch tatsächlich in Python befindet. Es wird wie ein Taple behandelt.

a = 1
b = 2
a, b = b, a
print(a,b)
# 2 1

Ich war überrascht, weil ich das benutzt habe, ohne es überhaupt zu merken.

Referenz: In Python benötigt ein Taple mit einem Element am Ende ein Komma

Einschlussnotation:

In Bezug auf die Liste können Sie Folgendes schreiben, was als Einschlussnotation bezeichnet wird.

test = [i for i in range(5)]
print(test)
# [0, 1, 2, 3, 4]

Die Einschlussnotation kann auch für Sätze verwendet werden.

test = {i for i in range(5)}
print(test)
# {0, 1, 2, 3, 4}

Sie können "if" verwenden, um nur diejenigen herauszunehmen, die die Bedingungen erfüllen. Dies ist also auf verschiedene Arten praktisch.

Iteratorgenerator

Wenn man nur die Spezifikationen betrachtet, scheint es wie "Wofür wird es verwendet?", Aber mit einem Deep-Learning-Framework ist es sehr nützlich als Lader für Datensätze (Sammlungen von Lehrerdaten). ImageDataGenerator für TensorFlow (Keras) und DataLoader für PyTorch.

Beim Deep Learning wird das Lernen in Stapeln (kleinen Datenblöcken) ausgeführt, daher ist dieser Iteratormechanismus sehr nützlich. Wenn Sie den Datenlader verwenden, ohne den Mechanismus des Iterators zu verstehen, werden Sie ihn daher nicht gut verstehen. Daher ist es gut, die Grundlagen zu verstehen.

Ich dachte, das Folgende sei im Qiita-Artikel leicht zu verstehen.

Python Iterator und Generator

In Bezug auf das Testen

Wenn Sie Probleme haben, können Sie die Probleme möglicherweise effizient eingrenzen, wenn Sie das Testprogramm verwenden können. Es ist also gut zu wissen.

unittest --- Unittest Framework Official Document Hinweise zur Verwendung des Python-Standards unittest Wovon ich im Python-Unit-Test süchtig war und was ich früher wissen wollte

Andere

Es hat nichts mit dem Framework zu tun, aber wenn Sie es wissen, ist TIPS beim Lesen und Schreiben von Python hilfreich.

Indexschleifen mit enumerate

Wenn Sie einen Index für die Anzahl der Schleifen benötigen, können Sie mit enumerate präzise schreiben:

test = ['a', 'b', 'c', 'd', 'e']

for i, x in enumerate(test):
    print(i, x)

# 0 a
# 1 b
# 2 c
# 3 d
# 4 e

Es ist keine große Sache, aber es ist so beliebt, dass es nützlich ist, beim Lesen oder Schreiben von Code zu wissen.

Erfassen Sie gleichzeitig den ganzzahligen Teil und den Bruchteil eines numerischen Werts mit modf

Es ist nützlich zu wissen, dass der Versuch, einen genauen Wert zu erhalten, etwas ärgerlich ist.

import math

print(math.modf(1.5))
# (0.5, 1.0)
print(type(math.modf(1.5)))
# <class 'tuple'>

Referenz: Mit Python, math.modf gleichzeitig den ganzzahligen Teil und den Bruchteil des numerischen Werts abrufen

Bedeutung des Sternchens * in Python

In C und C ++ ist das Sternchen ein Zeiger, daher habe ich nur unangenehme Erinnerungen, aber Python ist völlig anders, daher bin ich erleichtert (?). Es scheint gut, einen Blick auf die folgende Zusammenfassung zu werfen (obwohl ich denke, dass es in Ordnung ist, sie im Falle von Problemen nachzuschlagen).

Umgekehrtes Sternchen von Python 3.x

Sie können das Produkt von Matrizen mit @ berechnen

Sie können das Produkt von Matrizen mit @ berechnen. Bitte beachten Sie, dass es nur mit Python3.5, NumPy1.10.0 oder höher verwendet werden kann.

import numpy as np

x = np.array([1, 2])
y = np.array([1],[2])
x @ y
# array([5])

Das gleiche Ergebnis kann mit "np.matmul (x, y)" erzielt werden. Es gibt auch np.dot (x, y), aber dies scheint das Ergebnis zu ändern, wenn es zu einem Array mit 3 oder mehr Dimensionen wird (in 2 Dimensionen das gleiche Ergebnis wie matmul, @) ..

In einem maschinellen Lernsystem wird häufig das Produkt von Matrizen verwendet, sodass Sie es möglicherweise sehen.

Zusammenfassung

Ich habe kurz zusammengefasst, was ich in Python gelernt habe, um mein Verständnis des Frameworks zu vertiefen. Ich denke darüber nach, eine Notiz zu machen, damit ich andere Themen nicht vergesse.

Wenn Sie mehr über Python erfahren möchten, lesen Sie bitte die folgenden Artikel. Wenn Sie weitere bessere Bücher haben, teilen Sie uns dies bitte in den Kommentaren oder auf Twitter mit.

10 empfohlene Bücher zum Erlernen von 2020 Python und ein Memo an Qiita über das, was Sie gelernt haben

Recommended Posts

Wissensnotizen erforderlich, um das Python-Framework zu verstehen
Verwenden Sie das Python-Framework "cocotb", um Verilog zu testen.
Hinweise zur Python-Framework-Flasche
14 Tests, um den überraschend verwirrenden Umfang von Python zu verstehen
Versuchen Sie, Python selbst zu verstehen
Python-Notizen, die Sie bald vergessen sollten
Erleichtern Sie die Anzeige von Python-Modulausnahmen
Die erste API, die mit dem Python Djnago REST-Framework erstellt wurde
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
[Hyperledger Iroha] Hinweise zur Verwendung des Python SDK
Überlassen Sie die mühsame Verarbeitung Python
Im Python-Befehl zeigt Python auf Python3.8
So erhalten Sie die Python-Version
[Python] Ändere das Alphabet in eine Zahl
Der Versuch, Segmentbäume Schritt für Schritt zu implementieren und zu verstehen (Python)
[Python] Ein Hinweis, dass ich das Verhalten von matplotlib.pyplot zu verstehen begann
Einführung in das BOT-Framework Minette für Python
Verstehen Sie den Komfort des Django Rest Framework
[Python3] Verstehe die Grundlagen von Beautiful Soup
Python Hinweis: Modularisierung: __name__ == Verwendung von '__ main__'
Notizen vom Anfang von Python 1 lernen
Verschiedene Hinweise zum Django REST-Framework
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
[Python] Pandas in 10 Minuten vollständig zu verstehen
Python Amateur versucht die Liste zusammenzufassen ①
[Python] Verstehen, wie rekursive Funktionen verwendet werden
Notizen vom Anfang von Python 2 lernen
Der Weg zum Kompilieren zu Python 3 mit Thrift
Ich habe das Python Tornado Testing Framework ausprobiert
[Python3] Grundlegendes zu Dateivorgängen
Ich suchte nach den Fähigkeiten, die erforderlich sind, um Webingenieur bei Python zu werden
Der schnellste Weg für Anfänger, um Python zu beherrschen
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Python-Konstanten wie None (laut Referenz)
Versuchen Sie, das Problem der Python-Klassenvererbung zu lösen
[Python] So ändern Sie das Datumsformat (Anzeigeformat)
Lassen Sie uns verstehen, wie Argumente übergeben werden (Python Edition)
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Persönliche Notizen zum Dokumentieren von Python-Code in Sphinx
Dynamisches Ersetzen der nächsten Methode in Python
Begrüßen Sie die Welt mit Python mit IntelliJ
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
Excel X Python Die schnellste Arbeitstechnik
Der einfachste Weg, OpenCV mit Python zu verwenden
Tipps zum Schreiben werden in Python kurz abgeflacht
[Algorithmus x Python] Verwendung der Liste
So löschen Sie die von Python ausgegebenen Zeichen
Einführung in Python mit Atom (unterwegs)
[Einführung in den Algorithmus] Finden Sie den kürzesten Weg [Python3]
Python Amateur versucht die Liste zusammenzufassen ②
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
[Python] Ich werde FTP auf den FTP-Server hochladen.
Bewegen Sie Ihre Hand, um die Chi-Quadrat-Verteilung zu verstehen
[Python] Wirf eine Nachricht an den Slack-Kanal
Ein Artikel, der die Fallstricke von Python zusammenfasst
Ich möchte den Fortschritt in Python anzeigen!