Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Path: blob/master/Convolutional Neural Networks/week2/ResNets/resnets_utils.py
Views: 13377
import os1import numpy as np2import tensorflow as tf3import h5py4import math56def load_dataset():7train_dataset = h5py.File('datasets/train_signs.h5', "r")8train_set_x_orig = np.array(train_dataset["train_set_x"][:]) # your train set features9train_set_y_orig = np.array(train_dataset["train_set_y"][:]) # your train set labels1011test_dataset = h5py.File('datasets/test_signs.h5', "r")12test_set_x_orig = np.array(test_dataset["test_set_x"][:]) # your test set features13test_set_y_orig = np.array(test_dataset["test_set_y"][:]) # your test set labels1415classes = np.array(test_dataset["list_classes"][:]) # the list of classes1617train_set_y_orig = train_set_y_orig.reshape((1, train_set_y_orig.shape[0]))18test_set_y_orig = test_set_y_orig.reshape((1, test_set_y_orig.shape[0]))1920return train_set_x_orig, train_set_y_orig, test_set_x_orig, test_set_y_orig, classes212223def random_mini_batches(X, Y, mini_batch_size = 64, seed = 0):24"""25Creates a list of random minibatches from (X, Y)2627Arguments:28X -- input data, of shape (input size, number of examples) (m, Hi, Wi, Ci)29Y -- true "label" vector (containing 0 if cat, 1 if non-cat), of shape (1, number of examples) (m, n_y)30mini_batch_size - size of the mini-batches, integer31seed -- this is only for the purpose of grading, so that you're "random minibatches are the same as ours.3233Returns:34mini_batches -- list of synchronous (mini_batch_X, mini_batch_Y)35"""3637m = X.shape[0] # number of training examples38mini_batches = []39np.random.seed(seed)4041# Step 1: Shuffle (X, Y)42permutation = list(np.random.permutation(m))43shuffled_X = X[permutation,:,:,:]44shuffled_Y = Y[permutation,:]4546# Step 2: Partition (shuffled_X, shuffled_Y). Minus the end case.47num_complete_minibatches = math.floor(m/mini_batch_size) # number of mini batches of size mini_batch_size in your partitionning48for k in range(0, num_complete_minibatches):49mini_batch_X = shuffled_X[k * mini_batch_size : k * mini_batch_size + mini_batch_size,:,:,:]50mini_batch_Y = shuffled_Y[k * mini_batch_size : k * mini_batch_size + mini_batch_size,:]51mini_batch = (mini_batch_X, mini_batch_Y)52mini_batches.append(mini_batch)5354# Handling the end case (last mini-batch < mini_batch_size)55if m % mini_batch_size != 0:56mini_batch_X = shuffled_X[num_complete_minibatches * mini_batch_size : m,:,:,:]57mini_batch_Y = shuffled_Y[num_complete_minibatches * mini_batch_size : m,:]58mini_batch = (mini_batch_X, mini_batch_Y)59mini_batches.append(mini_batch)6061return mini_batches626364def convert_to_one_hot(Y, C):65Y = np.eye(C)[Y.reshape(-1)].T66return Y676869def forward_propagation_for_predict(X, parameters):70"""71Implements the forward propagation for the model: LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SOFTMAX7273Arguments:74X -- input dataset placeholder, of shape (input size, number of examples)75parameters -- python dictionary containing your parameters "W1", "b1", "W2", "b2", "W3", "b3"76the shapes are given in initialize_parameters7778Returns:79Z3 -- the output of the last LINEAR unit80"""8182# Retrieve the parameters from the dictionary "parameters"83W1 = parameters['W1']84b1 = parameters['b1']85W2 = parameters['W2']86b2 = parameters['b2']87W3 = parameters['W3']88b3 = parameters['b3']89# Numpy Equivalents:90Z1 = tf.add(tf.matmul(W1, X), b1) # Z1 = np.dot(W1, X) + b191A1 = tf.nn.relu(Z1) # A1 = relu(Z1)92Z2 = tf.add(tf.matmul(W2, A1), b2) # Z2 = np.dot(W2, a1) + b293A2 = tf.nn.relu(Z2) # A2 = relu(Z2)94Z3 = tf.add(tf.matmul(W3, A2), b3) # Z3 = np.dot(W3,Z2) + b39596return Z39798def predict(X, parameters):99100W1 = tf.convert_to_tensor(parameters["W1"])101b1 = tf.convert_to_tensor(parameters["b1"])102W2 = tf.convert_to_tensor(parameters["W2"])103b2 = tf.convert_to_tensor(parameters["b2"])104W3 = tf.convert_to_tensor(parameters["W3"])105b3 = tf.convert_to_tensor(parameters["b3"])106107params = {"W1": W1,108"b1": b1,109"W2": W2,110"b2": b2,111"W3": W3,112"b3": b3}113114x = tf.placeholder("float", [12288, 1])115116z3 = forward_propagation_for_predict(x, params)117p = tf.argmax(z3)118119sess = tf.Session()120prediction = sess.run(p, feed_dict = {x: X})121122return prediction123124