Deep Learning - Week 2.1 Lecture Notes
Short introduction to vector operation in python numpy in logistic regression.
Vectorizing Logistic Regression
Computing
Computing logistic regression
np.dot(w.T, x) + b
where b
is a single real number or a float
in python, that will be broadcasted to all element in matrix.
Vectorizing Backpropagation
# b will be broadcasted
Z = np.dot(w.T, X) + b
A = sigmoid(Z)
dz = A - Y
# m will be broadcasted
dw = np.dot(X, dz.T) / m
db = np.sum(dz) / m
# update weights
w = w - alpha * dw
b = b - alpha * db
Broadcasting in Python (numpy)
Given this table, where the values are calories ||Apples|Beef|Eggs|Potatoes| |—|—:|—:|—:|—:| |Carb|56.0|0.0|4.4|68.0| |Protein|1.2|104.0|52.0|8.0| |Fat|1.8|135.0|99.0|0.9|
Calculate % of calories from Carb, Protein, Fat without for loops
cal = A.sum(axis=0)
# reshape is redundant, but provide clearance
percentage = 100 * cal / A.reshape(1,4)
Notes:
axis=0
is vertical operation. So it will iterate over all row and doing operations on all columns.- reshape command requires constant time.
General Principle of broadcasting
- if you have (m,n) matrix and do operation with (1, n), will results in (m,n)
- if you have (m,n) matrix and do operation with (m, 1), will results in (m,n) as well
Written on January 6, 2019