吴恩达深度学习课后作业第三周——带一个隐含层的神经网络

如图,要实现这种非线性的分类,逻辑回归已经不能很好的解决问题了,那么,我们试着用带有一个隐含层的神经网络来解决一下试试呢?

可能代码写的不够规范,把一些assert的部分去掉了,而且有一些测试没有做,但是,不影响输出,哈哈哈。

Let us go.

在这里插入图片描述


目录
1 加载、查看数据集
2 先用逻辑回归查看分类效果(基于sklearn)
3 定义神经网络结构 (每一层节点的个数)
4 初始化模型的参数 (高斯随机)
5 前向传播 (求A2)
6 代价函数 (A2与Y之间的误差)
7 反向传播 (计算每一层的梯度)
8 更新参数
9 整合模型
10 预测
11 更改隐藏层节点个数


import numpy as np
import matplotlib.pyplot as plt
import sklearn.linear_model
from planar_utils import sigmoid, load_planar_dataset

np.random.seed(1) #设置一个固定的随机种子,以保证接下来的步骤中我们的结果是一致的。

1 加载、查看数据集

X, Y = load_planar_dataset()
X.shape
(2, 400)
Y.shape
(1, 400)
plt.scatter(X[0,:],X[1,:],c=np.squeeze(Y))
plt.show()

见上图

2 先用逻辑回归查看分类效果

clf = sklearn.linear_model.LogisticRegressionCV()
clf.fit(X.T,Y.T)
D:\Anaconda\lib\site-packages\sklearn\utils\validation.py:578: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)





LogisticRegressionCV(Cs=10, class_weight=None, cv=None, dual=False,
           fit_intercept=True, intercept_scaling=1.0, max_iter=100,
           multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,
           refit=True, scoring=None, solver='lbfgs', tol=0.0001, verbose=0)
Y_pred = clf.predict(X.T)
clf.score(X.T,Y.T)  # 准确率
0.47
clf.coef_
array([[ 0.02626552, -0.19186924]])

3 定义神经网络结构

def layer_size(X,Y):
    
    n_x = X.shape[0] # 输入层的特征数 2个
    n_h = 4  #隐藏层的神经元个数
    n_y = Y.shape[0] #输出层  1个

    return (n_x,n_h,n_y)
n_x,n_h,n_y = layer_size(X,Y)
print(n_x,n_h,n_y)
2 4 1

4 初始化模型的参数

def initialize_parameters(n_x,n_h,n_y):
    
    W1 = np.random.randn(n_h,n_
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值