Ich lerne Python. Die Bücher, die Sie gelesen haben, finden Sie im folgenden Blog-Beitrag.
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.
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 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.
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
__hoge__
Was ist der Ausdruck "hoge", den Sie oft sehen? Wenn Sie den folgenden Artikel lesen, werden Sie glücklich sein.
__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.
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
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
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.
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.
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
Es hat nichts mit dem Framework zu tun, aber wenn Sie es wissen, ist TIPS beim Lesen und Schreiben von Python hilfreich.
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.
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'>
*
in PythonIn 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
@
berechnenSie 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.
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.
Recommended Posts