04 基于神经网络的逻辑回归实现 - 神经网络和深度学习 [Deep Learning Specialization系列]

本文是Deep Learning Specialization系列课程的第1课《Neural Networks and Deep Learning》中Logistic Regression with a Neural Network mindset练习部分的笔记。

在《02 神经网络 - 神经网络和深度学习 [Deep Learning Specialization系列]》中,我们了解了神经网络的大部分理论知识。通过该编程实例,我们能构建一个简答的逻辑回归的分类器来识别猫,以复习神经网路的知识并了解具体的编程实现。

概述

本试验使用的是h5格式的数据集,该数据集包含有标注结果的训练数据和测试数据,通过以下7个步骤来完成神经网络的训练和预测:

  1. 数据加载
  2. 数据处理
  3. 参数初始化
  4. 逻辑回归函数的实现(正向传播)
  5. 损失/代价函数的实现(正向传播)
  6. 梯度递减算法的实现(反向传播)
  7. 预测

神经网络的流程图

1. 数据加载

h5格式的数据的读取是通过h5py库来实现的,简单的介绍可以参考我的上一篇文章《h5py - HDF5 for Python的简单入门》。

首先构建一个load_dataset()函数来完成数据的加载,该函数通过h5py.File()函数来读取h5格式的数据文件,将训练数据和测试数据做一个简单处理后,输出train_set_x_orig, train_set_y_orig, test_set_x_orig, test_set_y_orig, 和classes

在通过相对路径来读取h5文件时,会报错:

OSError: Unable to open file (unable to open file: name = 'datasets/mytestfile.hdf5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

目前还没找到比较好的方式,只能在h5py.File()函数中指定该文件的绝对路径来读取。

这是该数据的一些特点:

  • train_set_x_orig shape: (209, 64, 64, 3)
  • train_set_y_orig shape: (1, 209)
  • test_set_x_orig shape: (50, 64, 64, 3)
  • test_set_y_orig shape: (1, 50)

数据加载:
train_set_x_orig, train_set_y, test_set_x_orig, test_set_y, classes = load_dataset()

2. 数据处理

数据处理分为两部分:

  1. 向量化:需要把三维的图像数据(num_px, num_px, 3)向量化,reshape成一维向量(num_px * num_px * 3, 1)
  2. 标准化:由于图像的像素值是0-255,这里除以255以将其标准化为0-1的数据。
# Vectorization
train_set_x_orig_flatten = train_set_x_orig.reshape(train_set_x_orig[:].shape[0], -1).T 
# Standardization
train_set_x = train_set_x_orig_flatten/255

3. 参数初始化

将参数wb初始化为0的向量。这里需要注意的是参数的维度,需要与训练数据一致。

def initialize_with_zeros(dim):
    w = np.zeros((dim, 1))
    b = 0

    return w, b

4. 逻辑回归函数的实现

从这里开始就进入了正向传播(Forward Propagation)了。

逻辑回归函数的实现主要包含两部分:

  • 逻辑回归函数: z ( i ) = w T x ( i ) + b z^{(i)} = w^T x^{(i)} + b z(i)=wTx(i)+b
  • 激活函数: y ^ ( i ) = a ( i ) = s i g m o i d (
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值