Notes de connaissances nécessaires pour comprendre le framework Python

J'écrirai ce que j'ai appris en lisant un livre Python

J'étudie Python. Pour les livres que vous avez lus, veuillez vous référer au billet de blog ci-dessous.

10 livres recommandés pour apprendre Python 2020 et une note à Qiita sur ce que vous avez appris

En termes de contenu, cet article se concentre sur les connaissances nécessaires pour comprendre les frameworks écrits en Python (en particulier, les frameworks d'apprentissage en profondeur tels que TensorFlow et PyTorch).

Ce qui suit est une condition préalable.

«Nous sommes un éternel débutant. Soyez gentil

Pour le moment, nous prévoyons de l'ajouter et de le modifier au besoin.

Histoire générale

Python est tout au sujet des objets

Tout en Python semble être un objet. Je suis orienté objet dans l'atmosphère, donc je ne comprends pas vraiment le sens.

Même la classe semble être un objet, mais je ne suis pas sûr de ce que cela signifie. Je ne suis pas sûr même si j'ai lu ce qui suit.

Guide visuel des objets et classes Python - Tout est un objet

Pour le moment, je peux lire et écrire des programmes même si je ne les comprends pas, mais si je garde cela à l'esprit, j'ai l'impression que je serai un jour éclairé, alors je vais d'abord l'écrire.

Il est important de lire le document officiel

Cela semble évident, mais je pense que beaucoup de gens n'ont pas lu la documentation officielle (désolé, je n'ai pas trop lu).

J'ai lu quelques livres Python et j'ai remarqué, mais il est important de lire la documentation car les livres sont également assez faux et certaines parties sont omises pour faciliter la compréhension des débutants. .. Il y a aussi du japonais.

Documentation Python 3.8.1

Je pense qu'il est difficile de tout lire d'un coin à l'autre, mais il semble bon de jeter un coup d'œil rapide à PEP8, qui décrit les règles de codage.

PEP 8 -- Style Guide for Python Code

Relation de classe

Concernant la méthode spéciale __hoge__

Quelle est l'expression «hoge» que vous voyez souvent? Si vous lisez l'article suivant, vous serez heureux.

Même les débutants en Python veulent utiliser __hoge__! ~ Comment utiliser les attributs spéciaux et les méthodes spéciales ~

Utilisez l'instance comme une fonction dans la méthode __call__

Vous pouvez écrire comme suit.

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

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

cette? Est-ce une fonction? Dans la méthode? Si vous pensez, vous voudrez peut-être cocher «call».

C'est une image qui est un peu utilisée dans le cadre du deep learning.

Structure de données

Liste / Tapez / Dictionnaire / Set

Les quatre suivants sont utilisés pour traiter plusieurs données en Python.

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

Lorsque vous écrivez un programme simple par vous-même, il suffit généralement d'utiliser une liste, mais dans le cadre d'apprentissage en profondeur, bien sûr, autre chose qu'une liste est souvent utilisée. Plus précisément, les dictionnaires sont utilisés pour faire correspondre les étiquettes des données des enseignants avec des fichiers.

Lorsque vous lisez le code ou que vous l'utilisez vous-même, vous devez comprendre en quoi ils diffèrent. De plus, comme je l'expliquerai plus tard, veuillez noter que la substance du taple est en fait une virgule, pas une parenthèse.

Référence: [Python] Différences entre listes, taples, dictionnaires et ensembles

C'est une virgule pour faire un taple (les parenthèses peuvent être omises, mais les virgules ne peuvent pas être omises)

Un taple avec un élément doit être écrit comme suit:

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

Au contraire, en premier lieu, taple est OK avec juste une virgule comme indiqué ci-dessous.

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

Dans le livre d'introduction, la liste est souvent simplement écrite comme «[]» et le taple est écrit comme «()», donc en fait c'était un choc de faire un taple avec une virgule («,»). ..

De plus, Python a une méthode appelée unpack assignment, qui développe et attribue des éléments à plusieurs variables (dans le code ci-dessous, ʻa, b = b, a`), mais c'est en fait à l'intérieur de Python. Il sera traité comme un taple.

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

J'ai été surpris parce que j'ai utilisé cela sans m'en rendre compte du tout.

Référence: En Python, un seul élément taple nécessite une virgule à la fin

Notation d'inclusion:

Concernant la liste, vous pouvez écrire ce qui suit, qui s'appelle la notation d'inclusion.

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

La notation d'inclusion peut également être utilisée pour les ensembles.

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

Vous pouvez utiliser ʻif` pour retirer uniquement ceux qui remplissent les conditions, c'est donc pratique de plusieurs manières.

Générateur d'itérateur

En ne regardant que les spécifications, on dirait "à quoi ça sert?", Mais avec un framework de deep learning, il est très utile comme chargeur de jeux de données (collections de données enseignants). ImageDataGenerator pour TensorFlow (Keras) et DataLoader pour PyTorch.

Dans l'apprentissage profond, l'apprentissage est effectué par lots (petits morceaux de données), ce mécanisme d'itération est donc très utile. Par conséquent, si vous utilisez le chargeur de données sans comprendre le mécanisme de l'itérateur, vous ne le comprendrez pas bien, il est donc bon de comprendre les bases.

J'ai pensé que ce qui suit était facile à comprendre dans l'article de Qiita.

Itérateur et générateur Python

Concernant les tests

Si vous rencontrez des problèmes, vous pourrez peut-être les isoler efficacement si vous pouvez utiliser le programme de test, c'est donc bon à savoir.

unittest --- Document officiel du cadre Unittest Notes sur l'utilisation du test unittest standard Python Ce à quoi j'étais accro dans le test unitaire Python et ce que je voulais savoir plus tôt

Autre

Cela n'a rien à voir avec le framework, mais si vous le connaissez, TIPS est utile lors de la lecture et de l'écriture de Python.

Indexer des boucles avec enumerate

Si vous avez besoin d'un index sur le nombre de boucles, vous pouvez utiliser enumerate pour écrire de manière concise:

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

Ce n'est pas un gros problème, mais c'est tellement populaire qu'il est utile de le savoir lors de la lecture ou de l'écriture de code.

Acquérir simultanément la partie entière et la partie fractionnaire d'une valeur numérique avec modf

Il est utile de savoir qu'essayer d'obtenir une valeur précise est un peu ennuyeux.

import math

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

Référence: Obtenez la partie entière et la partie fraction de la valeur numérique en même temps avec Python, math.modf

Signification de l'astérisque `` * '' en Python

En C et C ++, l'astérisque est un pointeur, donc je n'ai que des souvenirs désagréables, mais Python est complètement différent, donc je suis soulagé (?). Il semble bon de jeter un œil au résumé suivant (même si je pense qu'il est normal de le rechercher en cas de problème).

Astérisque inversé de Python 3.x

Vous pouvez calculer le produit des matrices avec @

Vous pouvez calculer le produit des matrices avec «@». Veuillez noter qu'il ne peut être utilisé qu'avec Python3.5, NumPy1.10.0 ou version ultérieure.

import numpy as np

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

Le même résultat peut être obtenu avec np.matmul (x, y). Il y a aussi np.dot (x, y), mais cela semble changer le résultat quand il devient un tableau de 3 dimensions ou plus (en 2 dimensions, le même résultat que matmul, @) ..

Dans un système d'apprentissage automatique, le produit des matrices est souvent utilisé, vous pouvez donc le voir.

Résumé

J'ai brièvement résumé ce que j'ai appris en Python en termes de connaissances pour approfondir ma compréhension du framework. Je pense faire une note pour ne pas oublier d'autres thèmes.

Si vous souhaitez en savoir plus sur Python, veuillez vous référer aux articles suivants. De plus, si vous avez d'autres meilleurs livres, veuillez nous le faire savoir dans les commentaires ou sur Twitter.

10 livres recommandés pour apprendre Python 2020 et une note à Qiita sur ce que vous avez appris

Recommended Posts

Notes de connaissances nécessaires pour comprendre le framework Python
Utilisez le framework Python "cocotb" pour tester Verilog.
Notes sur le flacon de framework Python
14 quiz pour comprendre la portée étonnamment compliquée de Python
Essayez de comprendre Python soi
Notes Python à oublier bientôt
Facilitez la compréhension de l'affichage des exceptions du module Python
La première API à créer avec le framework Python Djnago REST
Connaissances minimales pour démarrer avec le module de journalisation Python
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
Laissez le traitement gênant à Python
Dans la commande python, python pointe vers python3.8
Comment obtenir la version Python
[Python] Changer l'alphabet en nombre
Essayer d'implémenter et de comprendre les arborescences de segments étape par étape (python)
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
Présentation du framework BOT Minette pour Python
Comprendre la commodité de Django Rest Framework
[Python3] Comprendre les bases de Beautiful Soup
python Remarque: Modularisation: __name__ == Comment utiliser '__ main__'
Notes d'apprentissage depuis le début de Python 1
Notes diverses sur le framework Django REST
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
[Python] pandas à bien comprendre en 10 minutes
Python amateur tente de résumer la liste ①
[Python] Comprendre comment utiliser les fonctions récursives
Notes d'apprentissage depuis le début de Python 2
La route de la compilation vers Python 3 avec Thrift
J'ai essayé le framework de test Python Tornado
[Python3] Comprendre les bases des opérations sur les fichiers
J'ai recherché les compétences nécessaires pour devenir ingénieur web avec Python
Le moyen le plus rapide pour les débutants de maîtriser Python
Introduction à Python Préparons l'environnement de développement
Constantes Python comme None (selon la référence)
Essayez de résoudre le problème de l'héritage de classe Python
[Python] Comment changer le format de la date (format d'affichage)
Comprenons comment passer des arguments (édition Python)
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Notes personnelles sur le code doc Python dans Sphinx
Pour remplacer dynamiquement la méthode suivante en python
Dites bonjour au monde avec Python avec IntelliJ
Essayez d'utiliser le framework Web Python Tornado Partie 1
Dessinez des graphiques dans Julia ... Laissez les graphiques à Python
Excel X Python La technique de travail la plus rapide
Le moyen le plus simple d'utiliser OpenCV avec python
Conseils pour rédiger un aplatissement concis en python
[Algorithm x Python] Comment utiliser la liste
Comment effacer les caractères générés par Python
Introduction à Python avec Atom (en route)
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
amateur python tente de résumer la liste ②
Essayez d'utiliser le framework Web Python Tornado Partie 2
[Python] Je vais télécharger FTP sur le serveur FTP.
Déplacez votre main pour comprendre la distribution du chi carré
[Python] Lancer un message sur le canal Slack
Un article résumant les pièges accro au python
Je veux afficher la progression en Python!