Dies ist der Inhalt von Kurs 1, Woche 2 (C1W2) von Deep Learning Specialization.
(C1W2L01) Binary Classification
(C1W2L02) Logistic Regression
――Das Symbol ist sowohl hier als auch beim maschinellen Lernen unterschiedlich. Verwenden Sie nicht $ x_0 ^ {(i)} = 1 $. Fügen Sie den konstanten Term $ b $ nicht in $ w $ ein.
(C1W2L03) Logistic Regression Cost Function
(C1W2L04) Gradient Descent
(C1W2L05) Derivatives
――Da es sich um grundlegende Inhalte handelt, können Sie das Video 1,75 Mal ansehen.
(C1W2L06) More Derivatives Example
――Da es sich um grundlegende Inhalte handelt, können Sie das Video 1,75 Mal ansehen.
(C1W2L07) Computation Graph
-Wenn $ J (a, b, c) = 3 \ (a + bc ) $, zerlegen Sie als $ u = bc $, $ v = a + u $, $ J = 3v $ Illustrieren Sie, wie man berechnet
(C1W2L08) Derivatives With Computation Graph
(C1W2L09) Logistic Regression Gradient Descent
(C1W2L10) Gradient Descent on m Example
(C1W2L11) Vectorization
-Erläuterung des Konzepts der Vektorisierung am Beispiel von $ w ^ T x $ von $ z = w ^ T x + b $
z = np.dot (w, x) + b
) auf dem Jupyter-Notebook. 300 mal andersIch habe auch die Zeit mit der Schleifen- und Vektorberechnung verglichen.
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")
Das Ergebnis. Es gab einen Unterschied von weniger als 700 Mal, 12 ms für die Vektorisierung und 821 ms für die Schleife.
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) #Produkt aus Matrix und Vektor
u = np.exp(v) #Lassen Sie exp auf jedes Element einwirken
u = np.log(v) #Machen Sie das Protokoll Element für Element
u = np.abs(v) #Abs für jedes Element(Absolutwert)Zu handeln
u = np.maximum(v, 0) #Elemente unter 0 sollten 0 sein
u = v ** 2 #Quadrat für jedes Element
u = 1/v #Invers für jedes Element
(C1W2L13) Vectorizing Logistics Regression
--Vektorisierung der Logistik-Regressionsberechnung
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} \Implementieren Sie die Funktion ordnungsgemäß)
`Z = np.dot (w.T, X) + b``` (`
b``` wird automatisch in einen Spaltenvektor von [1, m] konvertiert)(C1W2L14) Vectorizing Logistics Regression's Gradient Computation
db = \frac{1}{m} \cdot \mathrm{np.sum}(Z) \\
dw = \frac{1}{m} \cdot X\ dZ^T
(C1W2L15) Broadcasting in Python
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,)`
(verwenden Sie keine Arrays mit Rang 1) **example.py
>>> import numpy as np
>>> a = np.random.rand(5) #Rang 1 Array
>>> 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] #Die Anzeige ändert sich auch dann nicht, wenn Sie die Position wechseln
>>> print(np.dot(a, a.T)) #Ich berechne das innere Produkt, bin mir aber nicht sicher, ob ich das innere Produkt oder das äußere Produkt berechnen soll.
1.9200902050946715
>>>
>>> a = np.random.rand(5, 1) # (5, 1)Matrix
>>> print(a) #Zeilenvektor
[[0.78323543]
[0.18639053]
[0.45103025]
[0.48060903]
[0.93265189]]
>>> print(a.T)
[[0.78323543 0.18639053 0.45103025 0.48060903 0.93265189]] #Spaltenvektor nach der Landung
>>> print(np.dot(a, a.T)) #Berechnen Sie das Produkt aus Zeilenvektor und Spaltenvektor korrekt
[[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]]
`assert (a.shape == (5, 1))`
usw. ein.`a = a.reshape ((5,1))`
umgeformt――Das ist hier wichtig, weil ich bei maschinellem Lernen oft den Überblick über die Größe der Matrix verloren habe.
(C1W2L17) Quick tour of Jupyter/ipython notebooks
(C1W2L18) Explanation of Logistics Regression Cost Function (Optional)
Recommended Posts