Deeplearning.ai Course-2 Week-3 Programming Assignment

前言:

文章以Andrew Ng 的 deeplearning.ai 視頻課程為主線椿肩,記錄Programming Assignments 的實現(xiàn)過程晌梨。相對于斯坦福的CS231n課程筑悴,Andrew的視頻課程更加簡單易懂,適合深度學(xué)習(xí)的入門者系統(tǒng)學(xué)習(xí)蘑险!

本次作業(yè)主要涉及到TensorFlow的簡單使用纵搁,目前有很多深度學(xué)習(xí)的框架如caffe,TensorFlow等愧驱,使用這些框架能加速網(wǎng)絡(luò)的搭建慰技,降低出錯的可能性,達(dá)到事半功倍的效果组砚!

1.1 Build the first neural network in tensorflow

這次訓(xùn)練是手勢識別吻商,識別的label為0-5,六種手勢:

我們首先對數(shù)據(jù)集進(jìn)行簡單的處理:

X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()

X_train_flatten = X_train_orig.reshape(X_train_orig.shape[0], -1).T

X_test_flatten = X_test_orig.reshape(X_test_orig.shape[0], -1).T

X_train = X_train_flatten/255.

X_test = X_test_flatten/255.

Y_train = convert_to_one_hot(Y_train_orig, 6) ? ?#將0-5的label轉(zhuǎn)化為one_hot形式

Y_test = convert_to_one_hot(Y_test_orig, 6)

Create placeholders:

def create_placeholders(n_x, n_y):

X = tf.placeholder(tf.float32,shape=[n_x,None],name="X")

Y = tf.placeholder(tf.float32,shape=[n_y,None],name="Y")

return X, Y

Initializing the parameters:

def initialize_parameters():

W1 = tf.get_variable("W1",[25,12288],initializer=tf.contrib.layers.xavier_initializer(seed=1))

b1 = tf.get_variable("b1",[25,1],initializer=tf.zeros_initializer())

W2 = tf.get_variable("W2", [12, 25], initializer=tf.contrib.layers.xavier_initializer(seed=1))

b2 = tf.get_variable("b2", [12, 1], initializer=tf.zeros_initializer())

W3 = tf.get_variable("W3", [6, 12], initializer=tf.contrib.layers.xavier_initializer(seed=1))

b3 = tf.get_variable("b3", [6, 1], initializer=tf.zeros_initializer())

parameters = {"W1": W1,

"b1": b1,

"W2": W2,

"b2": b2,

"W3": W3,

"b3": b3}

return parameters

Forward propagation in tensorflow:

def forward_propagation(X, parameters):

W1 = parameters['W1']

b1 = parameters['b1']

W2 = parameters['W2']

b2 = parameters['b2']

W3 = parameters['W3']

b3 = parameters['b3']

Z1 = tf.add(tf.matmul(W1,X),b1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

A1 = tf.nn.relu(Z1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

Z2 = tf.add(tf.matmul(W2,A1),b2) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

A2 = tf.nn.relu(Z2) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

Z3 = tf.add(tf.matmul(W3,A2),b3) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

return Z3

Compute cost:

def compute_cost(Z3, Y):

logits = tf.transpose(Z3)

labels = tf.transpose(Y)

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits,labels=labels))

return cost

Backward propagation & parameter updates:

optimizer=tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(cost)

_,c=sess.run([optimizer,cost],feed_dict={X:minibatch_X,Y:minibatch_Y})

Building the model:

def model(X_train, Y_train, X_test, Y_test, learning_rate = 0.0001,

num_epochs = 1500, minibatch_size = 32, print_cost = True):

ops.reset_default_graph() ? ? ? ? ? ? ? ? ? ??

tf.set_random_seed(1) ? ? ? ? ? ? ? ? ? ? ? ? ? ?

seed = 3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

(n_x, m) = X_train.shape ? ? ? ? ? ? ? ? ? ? ? ? ?

n_y = Y_train.shape[0] ? ? ? ? ? ? ? ? ? ? ? ? ??

costs = [] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

X, Y = create_placeholders(n_x,n_y)

# Initialize parameters

parameters = initialize_parameters()

Z3 = forward_propagation(X, parameters)

cost = compute_cost(Z3, Y)

optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(cost)

init = tf.global_variables_initializer()

with tf.Session() as sess:

sess.run(init)

for epoch in range(num_epochs):

epoch_cost = 0. ? ? ? ? ? ? ? ? ? ? ?

num_minibatches = int(m / minibatch_size)?

seed = seed + 1

minibatches = random_mini_batches(X_train, Y_train, minibatch_size, seed)

for minibatch in minibatches:

(minibatch_X, minibatch_Y) = minibatch

_ , minibatch_cost = sess.run([optimizer,cost],feed_dict={X:mini_batch_X,Y:mini_batch_Y}

epoch_cost += minibatch_cost / num_minibatches

if print_cost == True and epoch % 100 == 0:

print ("Cost after epoch %i: %f" % (epoch, epoch_cost))

if print_cost == True and epoch % 5 == 0:

costs.append(epoch_cost)

plt.plot(np.squeeze(costs))

plt.ylabel('cost')

plt.xlabel('iterations (per tens)')

plt.title("Learning rate =" + str(learning_rate))

plt.show()

parameters = sess.run(parameters)

print ("Parameters have been trained!")

correct_prediction = tf.equal(tf.argmax(Z3), tf.argmax(Y))

accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

print ("Train Accuracy:", accuracy.eval({X: X_train, Y: Y_train}))

print ("Test Accuracy:", accuracy.eval({X: X_test, Y: Y_test}))

return parameters

從上面可以看出在用TensorFlow編寫代碼時糟红,有4個步驟:

1.創(chuàng)建tensor變量

2.創(chuàng)建session

3.初始化session

4.運行session

最后附上我作業(yè)的得分艾帐,表示我程序沒有問題,如果覺得我的文章對您有用改化,請隨意打賞掩蛤,我將持續(xù)更新Deeplearning.ai的作業(yè)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陈肛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兄裂,更是在濱河造成了極大的恐慌句旱,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晰奖,死亡現(xiàn)場離奇詭異谈撒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匾南,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門啃匿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事溯乒〖醒幔” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵裆悄,是天一觀的道長矛纹。 經(jīng)常有香客問我,道長光稼,這世上最難降的妖魔是什么或南? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮艾君,結(jié)果婚禮上采够,老公的妹妹穿的比我還像新娘。我一直安慰自己冰垄,他們只是感情好蹬癌,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著播演,像睡著了一般冀瓦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上写烤,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天翼闽,我揣著相機(jī)與錄音,去河邊找鬼洲炊。 笑死感局,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暂衡。 我是一名探鬼主播询微,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狂巢!你這毒婦竟也來了撑毛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤唧领,失蹤者是張志新(化名)和其女友劉穎藻雌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斩个,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡胯杭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了受啥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片做个。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸽心,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出居暖,到底是詐尸還是另有隱情顽频,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布膝但,位于F島的核電站冲九,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏跟束。R本人自食惡果不足惜莺奸,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冀宴。 院中可真熱鬧灭贷,春花似錦、人聲如沸略贮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逃延。三九已至览妖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揽祥,已是汗流浹背讽膏。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拄丰,地道東北人府树。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像料按,于是被迫代替她去往敵國和親奄侠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容