[PYTHON] Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C1W2)

introduction

Voici le contenu du cours 1, semaine 2 (C1W2) de Spécialisation en apprentissage profond.

(C1W2L01) Binary Classification

Contenu

Impressions

(C1W2L02) Logistic Regression

Contenu

--Valeur prédite $ \ hat {y} = P (y = 1 | x) $ (probabilité de $ y = 1 $) --Définissez le paramètre $ w \ in \ mathbb {R} ^ {n_x} $, $ b \ in \ mathbb {R} $

Impressions

――Le symbole est différent ici ainsi que dans le Machine Learning. N'utilisez pas $ x_0 ^ {(i)} = 1 $. N'incluez pas le terme constant $ b $ dans $ w $.

(C1W2L03) Logistic Regression Cost Function

Contenu

(C1W2L04) Gradient Descent

Contenu

(C1W2L05) Derivatives

Contenu

Impressions

―― Comme il s'agit d'un contenu de base, vous pouvez regarder la vidéo à 1,75 fois.

(C1W2L06) More Derivatives Example

Contenu

Impressions

―― Comme il s'agit d'un contenu de base, vous pouvez regarder la vidéo à 1,75 fois.

(C1W2L07) Computation Graph

Contenu

-Lorsque $ J (a, b, c) = 3 \ (a + bc ) $, décomposer en $ u = bc $, $ v = a + u $, $ J = 3v $ Illustrer comment calculer

(C1W2L08) Derivatives With Computation Graph

Contenu

--Explication de la différenciation ($ \ frac {dJ} {da} = \ frac {dJ} {dv} \ frac {dv} {da} $) en utilisant le graphe de calcul

(C1W2L09) Logistic Regression Gradient Descent

Contenu

--Explication de la différenciation de la perte $ L \ (a, y ) $ de régression logistique

(C1W2L10) Gradient Descent on m Example

Contenu

--Explication de la façon de différencier la fonction de coût $ J \ (w, b ) $ et de l'appliquer à la méthode de descente la plus raide lorsque le nombre d'échantillons est $ m $

(C1W2L11) Vectorization

Contenu

-Explication du concept de vectorisation en utilisant $ w ^ T x $ de $ z = w ^ T x + b $ comme exemple

J'ai également comparé le temps avec la boucle for et le calcul vectoriel.

vectorization.py


import numpy as np
import time

a = np.random.rand(1000000)
b = np.random.rand(1000000)

tic = time.time()
c = np.dot(a, b)
toc = time.time()

print(c)
print("Vectorization version:" + str(1000*(toc-tic)) + "ms")

c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
toc = time.time()

print(c)
print("for loop:" + str(1000*(toc-tic)) + "ms")

Le résultat. Il y avait une différence de moins de 700 fois, 12 ms pour la vectorisation et 821 ms pour la boucle for.

249840.57440415953
Vectorization version:12.021541595458984ms
249840.57440415237
for loop:821.0625648498535ms

(C1W2L12) More Vectorization Examples

Contenu

example.py


import numpy as np

u = np.dot(A, v) #Produit de matrice et de vecteur

u = np.exp(v) #Laisser exp agir sur chaque élément
u = np.log(v) #Faire en sorte que le journal fonctionne élément par élément
u = np.abs(v) #Abs pour chaque élément(Valeur absolue)Agir
u = np.maximum(v, 0) #Les éléments inférieurs à 0 doivent être 0
u = v ** 2 #Carré pour chaque élément
u = 1/v #Inverse pour chaque élément

(C1W2L13) Vectorizing Logistics Regression

Contenu

X = \left[x^{(1)} \ x^{(2)} \cdots \ x^{(m)}\right] \ (X \in \mathbb{R}^{n_x \times m}) \\
Z = \left[z^{(1)} \ z^{(2)} \cdots \ z^{(m)}\right] \ (Z \in \mathbb{R}^m ) \\
A = \left[a^{(1)} \ a^{(2)} \cdots \ a^{(m)}\right] \ (A \in \mathbb{R}^m ) \\
Z = w^T X + \left[b \ b \ \cdots b \right] \\
A = \mathrm{sigmoid}\left( Z \right) \ (\mathrm{sigmoid} \Mettre en œuvre la fonction correctement)

--En Python, `Z = np.dot (w.T, X) + b ''` ( `` b``` est automatiquement converti en un vecteur colonne de [1, m])

(C1W2L14) Vectorizing Logistics Regression's Gradient Computation

Contenu

--Explication de la vectorisation du calcul différentiel de la régression logistique

db = \frac{1}{m} \cdot \mathrm{np.sum}(Z) \\
dw = \frac{1}{m} \cdot X\ dZ^T

Impressions

(C1W2L15) Broadcasting in Python

Contenu

--Explication de la diffusion Python -Lorsque la matrice (m, n) et la matrice (1, n) sont ajoutées, la matrice (1, n) devient automatiquement la matrice (m, n). -Lorsque la matrice (m, n) et la matrice (m, 1) sont ajoutées, la matrice (m, 1) devient automatiquement la matrice (m, n).

example.py


>>> import numpy as np
>>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> b = np.array([100, 200, 300, 400])
>>> a + b
array([[101, 202, 303, 404],
       [105, 206, 307, 408]])

(C1W2L16) A Note on Python/numpy vectors

Contenu

example.py


>>> import numpy as np
>>> a = np.random.rand(5) #Tableau de rang 1
>>> print(a)
[0.4721318  0.73582028 0.78261299 0.25030022 0.69326545]
>>> print(a.T)
[0.4721318  0.73582028 0.78261299 0.25030022 0.69326545] #L'affichage ne change pas même si vous changez de place
>>> print(np.dot(a, a.T)) #Je calcule le produit intérieur, mais je ne sais pas s'il faut calculer le produit intérieur ou le produit extérieur.
1.9200902050946715
>>>
>>> a = np.random.rand(5, 1) # (5, 1)Matrice
>>> print(a) #Vecteur de ligne
[[0.78323543]
 [0.18639053]
 [0.45103025]
 [0.48060903]
 [0.93265189]]
>>> print(a.T)
[[0.78323543 0.18639053 0.45103025 0.48060903 0.93265189]] #Vecteur de colonne après l'atterrissage
>>> print(np.dot(a, a.T)) #Calculez correctement le produit du vecteur de ligne et du vecteur de colonne
[[0.61345774 0.14598767 0.35326287 0.37643002 0.73048601]
 [0.14598767 0.03474143 0.08406777 0.08958097 0.17383748]
 [0.35326287 0.08406777 0.20342829 0.21676921 0.42065422]
 [0.37643002 0.08958097 0.21676921 0.23098504 0.44824092]
 [0.73048601 0.17383748 0.42065422 0.44824092 0.86983955]]

--Si vous ne connaissez pas la dimension, entrez assert (a.shape == (5, 1)) etc. --Un tableau de rang 1 est explicitement remodelé comme ```a = a.reshape ((5,1)) `` `

Impressions

«C'est important ici car j'ai souvent perdu la trace de la taille de la matrice lorsque j'ai suivi le Machine Learning.

(C1W2L17) Quick tour of Jupyter/ipython notebooks

Contenu

(C1W2L18) Explanation of Logistics Regression Cost Function (Optional)

Contenu

Impressions

référence

Recommended Posts

Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C3W1)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C1W3)
Dossier d'auto-apprentissage de la spécialisation en apprentissage profond (Coursera) (C4W3)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C1W4)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C2W1)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C1W2)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C3W2)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C2W2)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C4W1)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C2W3)
Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C4W2)
Dossier d'apprentissage
Dossier d'apprentissage n ° 3
Dossier d'apprentissage n ° 1
Dossier d'apprentissage n ° 2
L'apprentissage en profondeur
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 9) Classe MultiLayerNet
Mémorandum d'apprentissage profond
Commencer l'apprentissage en profondeur
Apprentissage en profondeur Python
Apprentissage profond × Python
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 19) Augmentation des données
Dossier d'apprentissage jusqu'à présent
Premier apprentissage profond ~ Lutte ~
Python: pratique du Deep Learning
Fonctions d'apprentissage en profondeur / d'activation
Apprentissage profond à partir de zéro
Fiche d'apprentissage 4 (8e jour)
Fiche d'apprentissage 9 (13e jour)
Fiche d'apprentissage 3 (7e jour)
Deep learning 1 Pratique du deep learning
Apprentissage profond / entropie croisée
Fiche d'apprentissage 5 (9e jour)
Fiche d'apprentissage 6 (10e jour)
Premier apprentissage profond ~ Préparation ~
Enregistrement d'apprentissage de la programmation 2ème jour
Première solution d'apprentissage en profondeur ~
Fiche d'apprentissage 8 (12e jour)
[AI] Apprentissage métrique profond
Fiche d'apprentissage 1 (4e jour)
Fiche d'apprentissage 7 (11e jour)
J'ai essayé le deep learning
Python: réglage du Deep Learning
Fiche d'apprentissage 2 (6e jour)
Technologie d'apprentissage en profondeur à grande échelle
Fiche d'apprentissage Linux ① Planifier
Fiche d'apprentissage 16 (20e jour)
Dossier d'apprentissage 22 (26e jour)
Fonction d'apprentissage profond / softmax
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 18) One! Miaou! Grad-CAM!
Mémo d'auto-apprentissage "Deep Learning from scratch" (n ° 15) Tutoriel pour débutants TensorFlow