吴恩达深度学习L1W3作业

用1层隐藏层的神经网络分类二维数据

欢迎来到第3周的编程作业。 现在是时候建立你的第一个神经网络了,它将具有一层隐藏层。 你将看到此模型与你使用逻辑回归实现的模型之间的巨大差异。

你将学到如何:

  • 实现具有单个隐藏层的2分类神经网络
  • 使用具有非线性激活函数的神经元,例如tanh
  • 计算交叉熵损失
  • 实现前向和后向传播
1 安装包

让我们首先导入在作业过程中需要的所有软件包。

  • numpy是Python科学计算的基本包。
  • sklearn提供了用于数据挖掘和分析的简单有效的工具。
  • matplotlib 是在Python中常用的绘制图形的库。
  • testCases提供了一些测试示例用以评估函数的正确性
  • planar_utils提供了此作业中使用的各种函数
# Package imports
import numpy as np
import matplotlib.pyplot as plt
from testCases import *
import sklearn
import sklearn.datasets
import sklearn.linear_model
from planar_utils import plot_decision_boundary, sigmoid, load_planar_dataset, load_extra_datasets

%matplotlib inline

np.random.seed(1) # set a seed so that the results are consistent
2 数据集

 首先,让我们获取处理的数据集。 以下代码会将“flower” 2分类数据集加载到变量 X 和 Y中。

使用matplotlib可视化数据集。 数据看起来像是带有一些红色(标签y = 0)和一些蓝色(y = 1)点的“花”。 我们的目标是建立一个适合该数据的分类模型。

# Visualize the data:
plt.scatter(X[0, :], X[1, :], c=Y[0, :], s=40, cmap=plt.cm.Spectral);

现在你有:
   - 包含特征(x1,x2)的numpy数组(矩阵)X
   - 包含标签(红色:0,蓝色:1)的numpy数组(向量)Y。

首先让我们深入地了解一下我们的数据。

练习:数据集中有多少个训练示例? 另外,变量“ X”和“ Y”的“shape”是什么?

提示:如何获得numpy数组的shape维度? 

X有400个样本,每个样本有2个特征。

3 简单Logistic回归

在构建完整的神经网络之前,首先让我们看看逻辑回归在此问题上的表现。 你可以使用sklearn的内置函数来执行此操作。 运行以下代码以在数据集上训练逻辑回归分类器。

# Train the logistic regression classifier
clf = sklearn.linear_model.LogisticRegressionCV();
clf.fit(X.T, Y[0, :].T);

现在,你可以运行下面的代码以绘制此模型的决策边界:

# Plot the decision boundary for logistic regression
plot_decision_boundary(lambda x: clf.predict(x), X, Y)
plt.title("Logistic Regression")

# Print accuracy
LR_predictions = clf.predict(X.T)
print ('Accuracy of logistic regression: %d ' % float((np.dot(Y,LR_predictions) + np.dot(1-Y,1-LR_predictions))/float(Y.size)*100) +
       '% ' + "(percentage of correctly labelled datapoints)")

 说明:由于数据集不是线性可分类的,因此逻辑回归效果不佳。 让我们试试是否神经网络会做得更好吧!

4 神经网络模型:

从上面我们可以得知Logistic回归不适用于“flower数据集”。现在你将训练带有单个隐藏层的神经网络。

这是我们的模型:

数学原理:

根据所有的预测数据,你还可以如下计算损失J:

提示
建立神经网络的一般方法是:
1.定义神经网络结构(输入单元数,隐藏单元数等)。
2.初始化模型的参数
3.循环:

  • 实现前向传播
  • 计算损失
  • 后向传播以获得梯度
  • 更新参数(梯度下降)

我们通常会构建辅助函数来计算第1-3步,然后将它们合并为nn_model()函数。一旦构建了nn_model()并学习了正确的参数,就可以对新数据进行预测

4.1 定义神经网络

练习:定义三个变量:
     - n_x:输入层的大小
     - n_h:隐藏层的大小(将其设置为4)
     - n_y:输出层的大小

提示:使用shape来找到n_x和n_y。 另外,将隐藏层大小硬编码为4。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值