Skip to the content.

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