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.
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.
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.
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
__hoge__
Quelle est l'expression «hoge» que vous voyez souvent? Si vous lisez l'article suivant, vous serez heureux.
__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.
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
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
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.
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
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
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.
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.
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'>
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 «@». 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.
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