基于逻辑回归算法的“喵”图识别

本文介绍如何基于逻辑回归算法识别小喵图片,包括数据处理、模型搭建、测试、参数调整和应用。通过吴恩达老师的课程,利用numpy和h5py库处理数据,模型在训练集上达到99%精度,但存在过拟合问题,通过调整学习率来优化模型。
摘要由CSDN通过智能技术生成

本文是基于吴恩达老师的《深度学习》第一课第二周课后题所做,目的是使用逻辑回归算法来对小喵图片进行识别。在创建模型时主要包括:数据处理、模型搭建、模型测试、参数调整、模型应用等五个步骤,下面分别详述。

一、数据处理

为了简化流程,吴恩达老师已经给出了训练集和测试集数据以.h5格式给出(.h5格式是使用h5py库生产数据文件类型),数据文件链接为:https://pan.baidu.com/s/1KZks2c1TkIxtaWJrBtrYYQ,密码:i1l0,处理完成后会返回5个矩阵分别为:训练集X矩阵(train_set_x_orig), 训练集Y矩阵(train_set_y_orig ),测试集X矩阵(test_set_x_orig),测试集Y矩阵(test_set_y_orig),类别( classes:喵与非喵)

import numpy as np
import h5py
      
def load_dataset():
    train_dataset = h5py.File('datasets\\train_catvnoncat.h5', "r")
    train_set_x_orig = np.array(train_dataset["train_set_x"][:]) # your train set features
    train_set_y_orig = np.array(train_dataset["train_set_y"][:]) # your train set labels

    test_dataset = h5py.File('datasets\\test_catvnoncat.h5', "r")
    test_set_x_orig = np.array(test_dataset["test_set_x"][:]) # your test set features
    test_set_y_orig = np.array(test_dataset["test_set_y"][:]) # your test set labels

    classes = np.array(test_dataset["list_classes"][:]) # the list of classes
    
    train_set_y_orig = train_set_y_orig.reshape((1, train_set_y_orig.shape[0]))
    test_set_y_orig = test_set_y_orig.reshape((1, test_set_y_orig.shape[0]))

    return train_set_x_orig, train_set_y_orig, test_set_x_orig, test_set_y_orig, classes

此处所使用的numpy和h5py 库都是比较经典的库,在此不多介绍。

此时得到的样本数量为209个,每个样本是3通道(RGB)图片生产的数组,大小为64*64*3,这种3维数组不便于处理需转化成 2维数组,且每一列代表一个样本数据,因此我们进行flatten、转置和均值化处理。

train_set_x_flatten = train_set_x_orig.reshape(m_train,num_px**2*3).T
test_set_x_flatten = test_set_x_orig.reshape(m_test,-1).T
    
train_set_x = train_set_x_flatten / 255
test_set_x = test_set_x_flatten / 255

当然,我们对数据只做了简单的处理,还有许多数据处理手段可以应用以提高算法的准确性和鲁棒性。

二、模型搭建

接下来可以把逻辑回归算法分解成多个函数进行实现。

(1)激励函数,采用经典的sigmoid函数

def sigmoid(z):
    s = 1.0 / (1.0 + np.exp(-z))
    return s

(2)初始化函数,初始化w和b。建议在python程序中多使用assert函数对数组的shape进行判断,以减少错误的发生。

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

    assert(w.shape == (dim,1))
    assert(isinstance(b,float) or isinstance(b,int))

    return w,b

(3)传播函数,用于计算梯度下降法中的两个重要参数dw和db,及代价函数(Cost Function),根据逻辑回归算法我们采用的代价函数为:J(w,b)=1m

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值