资源简介

吴恩达深度学习第一课第四周作业及学习心得体会,含三元分类问题解决!

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Thu Jul 19 21:22:04 2018

@author: yuanye
“““



import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression

#产生数据
np.random.seed(1)
m = 600                                 #样本数
N = int(m/2)                            #分为两类
D = 2                                   #样本的特征数或维度
X = np.zeros((mD))                     #初始化样本坐标
Y = np.zeros((m1))                     #初始化样本标签
a = 4                                   #基础半径

for j in range(2):
    ix = range(N*jN*(j+1))#ix=(0,199)(200,399)
    t = np.linspace(j*3.12(j+1)*3.12N)                            #theta角度,产生200个角度并加入随机数,保证角度随机分开,图像开起来稀疏程度不一
    r = a*np.sin(4*t) + np.random.randn(N)*0.2                      #radius半径,4sin(4*t)并加入一定的随机,图像轨道不平滑
    X[ix] = np.c_[r*np.sin(t) r*np.cos(t)]                         #生成坐标点
    Y[ix] = j                                                       #red or blue


X = X.T
Y = Y.T
log = LogisticRegression(C=2000)
log.fit(X.TY.ravel())                      #用X和Y来进行逻辑回归训练

y_log_predict = log.predict(X.T)            #根据训练结果对X进行预测
p_log = np.mean(y_log_predict==Y.ravel())   #计算准确率
print(‘逻辑回归的准确率为:%f‘%p_log)

x_min x_max = X[0 :].min() - 1 X[0 :].max() + 1
y_min y_max = X[1 :].min() - 1 X[1 :].max() + 1
xx yy = np.meshgrid(np.arange(x_min x_max 0.01)np.arange(y_min y_max 0.01)) #将二维平面以0.01*0.01的间隔散开,xx为每个点的横坐标,yy为每个点的纵坐标
zz = np.array([xx.ravel() yy.ravel()]).T   #zz为每个点的横纵坐标,其行数为总点数,列数为特征数,即维度
Z = log.predict(zz)                         #通过logistic回归预测每个点的标签
Z = Z.reshape(xx.shape)
plt.figure(1)
plt.scatter(X[0 :] X[1 :] c=np.squeeze(Y) edgecolors=‘k‘ s=40 cmap=plt.cm.Spectral)
plt.contourf(xx yy Z alpha=0.3cmap=plt.cm.Spectral) #绘制等高线
plt.xlim(xx.min() xx.max())
plt.ylim(yy.min() yy.max())
plt.show()



#初始化参数
def init_para(layer_dims):
    L = len(layer_dims)             #L为总层数
    np.random.seed(L)
    parameters = {}
    for l in range(1L):            #初始化W1~WLb1~bL
        parameters[‘W‘+str(l)] = np.random.randn(layer_dims[l] layer_dims[l-1])*0.01
        parameters[‘b‘+str(l)] = np.zeros((layer_dims[l] 1))
    return parameters

#单次前向运算
def single_forward(A_pre W b mode):
    Z = np.dot(W A_pre) + b        #根据上一层的输出A_pre,以及本层的W b计算本层的Z
    if mode==‘sigmoid‘:             #根据所选定的激活函数计算本层的输出
        A = 1.0/(1+np.exp(-Z))
    if mode==‘ReLU‘:
        A = (Z+abs(Z))/2
    if mode==‘tanh‘:
        A = np.tanh(Z)
    cache = {‘A_pre‘:A_pre
             ‘W‘:W
             ‘b‘:b
             ‘Z‘:Z
             ‘A‘:A}
    return A cache

#前向传播函数
def prop_forward(X parameters):
    caches = []
    A = X                           #将X赋给A0
    L = len(parameters)//2
    for l in range(1L):            #l从1到L-1,调用L-1次前向运算,由于A0的特征值存在大量负数,
        A_pre = A                   #因此第一层激活函数如果选用ReLU无法正确训练网络,因为大量的信息被截掉
        Acache = single_forward(A_pre parameters

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        7855  2018-07-27 00:00  neuralnetwork_Llayer_2.py
     文件        8532  2018-07-27 00:06  neuralnetwork_Llayer_3_ny_equal_3.py
     文件      721572  2018-07-27 00:22  吴恩达第一课第四周学习心得体会.docx
     文件      598050  2018-07-27 00:22  吴恩达第一课第四周学习心得体会.pdf
     目录           0  2018-07-26 21:54  CatRecognition_Llayer\
     文件        9447  2018-07-26 00:14  CatRecognition_Llayer\CatRecognition_NN_Llayer.py
     目录           0  2018-07-26 21:54  CatRecognition_Llayer\datasets\
     文件      616958  2017-09-02 17:29  CatRecognition_Llayer\datasets\test_catvnoncat.h5
     文件     2572022  2017-09-02 17:30  CatRecognition_Llayer\datasets\train_catvnoncat.h5
     目录           0  2018-07-26 21:54  CatRecognition_Llayer\images\
     文件      601084  2017-09-02 17:31  CatRecognition_Llayer\images\cat1.jpg
     文件      954514  2018-07-15 21:31  CatRecognition_Llayer\images\cat2.jpg
     文件       19441  2017-12-09 22:44  CatRecognition_Llayer\images\cat3.jpg
     文件       94439  2017-09-02 17:32  CatRecognition_Llayer\images\cat4.jpg
     文件       64278  2018-07-15 21:29  CatRecognition_Llayer\images\cat5.jpg
     文件      129629  2018-07-15 21:30  CatRecognition_Llayer\images\cat6.jpg
     文件       90920  2018-07-15 21:30  CatRecognition_Llayer\images\cat7.jpg
     文件      310181  2017-09-02 17:31  CatRecognition_Llayer\images\other1.jpg
     文件      339673  2017-09-02 17:32  CatRecognition_Llayer\images\other2.jpg
     文件      636273  2017-09-02 17:32  CatRecognition_Llayer\images\other3.jpg
     文件       17997  2017-12-09 22:46  CatRecognition_Llayer\images\other4.jpg
     文件       35351  2018-07-15 21:28  CatRecognition_Llayer\images\other5.jpg
     文件       41561  2018-07-15 21:31  CatRecognition_Llayer\images\other6.jpg
     文件       73296  2018-07-15 21:31  CatRecognition_Llayer\images\other7.jpg
     文件        7899  2018-07-26 23:57  neuralnetwork_Llayer_1.py

评论

共有 条评论