Voici le contenu du cours 1, semaine 2 (C1W2) de Spécialisation en apprentissage profond.
(C1W2L01) Binary Classification
(C1W2L02) Logistic Regression
--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} $
――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
(C1W2L04) Gradient Descent
dw
dans les programmesdb
dans les programmes(C1W2L05) Derivatives
―― Comme il s'agit d'un contenu de base, vous pouvez regarder la vidéo à 1,75 fois.
(C1W2L06) More Derivatives Example
―― Comme il s'agit d'un contenu de base, vous pouvez regarder la vidéo à 1,75 fois.
(C1W2L07) Computation Graph
-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
--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
--Explication de la différenciation de la perte $ L \ (a, y ) $ de régression logistique
(C1W2L10) Gradient Descent on m Example
--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
-Explication du concept de vectorisation en utilisant $ w ^ T x $ de $ z = w ^ T x + b $ comme exemple
z = np.dot (w, x) + b
) sur le notebook Jupyter. 300 fois différentJ'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
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
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
--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
(C1W2L15) Broadcasting in Python
--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
(n,)
(n'utilisez pas de tableaux de rang 1) **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)) `` `
«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
(C1W2L18) Explanation of Logistics Regression Cost Function (Optional)
Recommended Posts