深度学习吴恩达作业题系列(1)

1、Python的基本操作_Numpy

第一个程序:
输出Hello world!
深度学习吴恩达作业题系列(1)_第1张图片

1.1建立运行numpy的基本函数

1.1.1sigmoid函数与np.exp()

在这里插入图片描述
深度学习吴恩达作业题系列(1)_第2张图片
x = [1, 2, 3]
basic_sigmoid(x)
运行就会出错,原因就是这里建立的是数组,而数组不能用于该模块里面的函数,需要将其转化为向量列表在numpy库里面的函数中运行才行,在该库的方法中,根据Python的广播机制,向量列表可以和常数一起运算。
深度学习吴恩达作业题系列(1)_第3张图片
深度学习吴恩达作业题系列(1)_第4张图片

1.1.2Sigmoid导数

在这里插入图片描述
深度学习吴恩达作业题系列(1)_第5张图片

1.1.3reshape arrays

定义image2vector函数,将多为矩阵重塑为一维向量:
深度学习吴恩达作业题系列(1)_第6张图片

1.4正则化矩阵的行

一般来说,将数据正则化有利于梯度下降收敛更快,在这里将x矩阵进行正则化。
深度学习吴恩达作业题系列(1)_第7张图片
5=sqrt(33+44+0)
深度学习吴恩达作业题系列(1)_第8张图片

1.5广播和softmax函数

softmax函数:主要将在负无穷到正无穷上的预测结果转换为正数的概率。主要分为两步:首先通过指数将结果全部转换成非负数,作为分子;然后分母是所有预测结果的指数的和。所有预测结果相加为1。
在这里插入图片描述
深度学习吴恩达作业题系列(1)_第9张图片

1.2向量化

深度学习吴恩达作业题系列(1)_第10张图片
深度学习吴恩达作业题系列(1)_第11张图片

1.2.1完成L1和L2LOSS函数

在这里插入图片描述
深度学习吴恩达作业题系列(1)_第12张图片
在这里插入图片描述
深度学习吴恩达作业题系列(1)_第13张图片

2、具有神经网络倾向的逻辑回归

2.1导入相应的包

numpy是使用Python进行科学计算的基本软件包。
h5py是与存储在H5文件中的数据集进行交互的通用软件包。
matplotlib是著名的Python图形库。
PIL和scipy来测试带有您自己的图片模型,

首先将数据集以及图片文件夹放到源程序目录下。
然后再当前源程序目录下建立lr_utils.py文件,该模块中封装了加载数据集的函数,并返回相应的变量的数据:

import numpy as np
import h5py
def load_dataset():
#打开一个文件,第一个参数就是文件路径,由于datasets文件夹与源程序在同一目录,先以读方式打开训练集数据,第二个参数访问方式
    train_dataset = h5py.File('datasets/train_catvnoncat.h5', "r")
    #将打开的训练集数据集中的x数据存到矩阵中,是一个四维维矩阵n*num_px*num_px*3,每个元素代表某个图片对应(x,y,z)坐标中色度强度值,n表示n个个例(图片),取出主键为train_set_x的所有键值
    train_set_x_orig = np.array(train_dataset["train_set_x"][:])
    #将打开的训练集数据集中的y数据存到矩阵中,是一个二维维矩阵0或1,来标记是否为cat,n*1中一列表示0或1.
    train_set_y_orig = np.array(train_dataset["train_set_y"][:])
    #打开测试集
    test_dataset = h5py.File('datasets/test_catvnoncat.h5', "r")
    test_set_x_orig = np.array(test_dataset["test_set_x"][:]) 
    test_set_y_orig = np.array(test_dataset["test_set_y"][:]) 
    #y中1对应classes中cat,0对应non_cat.classes是一个数组。
    classes = np.array(test_dataset["list_classes"][:]) # the list of classes
    #重塑矩阵的形状1*n
    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

首先导入需要的模块以及模块中需要用到的方法。
深度学习吴恩达作业题系列(1)_第14张图片

2.2问题集概述

问题陈述:您将获得一个包含以下内容的数据集(“ data.h5”):

  • 标记为cat(y = 1)或non_cat(y = 0)的m_train图像的训练集
  • 标记为cat或non-cat的m_test图像的测试集
  • 每个图像的形状(num_px,num_px,3),其中3表示3个通道(RGB)。 因此,每个图像都是正方形(高度= num_px)和(宽度= num_px)。
    在这里插入图片描述
    您将构建一个简单的图像识别算法,该算法可以将图片正确分类为猫或非猫。

我们在图像数据集(训练和测试)的末尾添加了“ _orig”,因为我们将对其进行预处理。 预处理之后,我们将得到train_set_x和test_set_x(标签train_set_y和test_set_y不需要任何预处理)。
train_set_x_orig和test_set_x_orig的每一行都是代表图像的数组。 您可以通过运行以下代码来形象化示例。 还可以随意更改索引值并重新运行以查看其他图像。
深度学习吴恩达作业题系列(1)_第15张图片
m_train(培训示例数)
m_test(测试示例数)
num_px(=高度=训练图像的宽度(单位是像素))
请记住,train_set_x_orig是一个形状为numpy的数组(m_train,num_px,num_px,3)。 例如,您可以通过编写train_set_x_orig.shape [0]来访问m_train。
深度学习吴恩达作业题系列(1)_第16张图片
深度学习吴恩达作业题系列(1)_第17张图片
接下来,将x矩阵里面颜色强度值除以255,将所有位置的颜色强度统一标准化到0~1之间。
在这里插入图片描述
预处理新数据集的常见步骤是:

  • 找出问题的尺寸和形状(m_train,m_test,num_px等)
  • 重塑数据集,使每个示例现在都是大小为(num_px * num_px * 3,1)的向量
  • “标准化”数据

3、学习算法的一般架构

现在是时候设计一种简单的算法来区分猫图像和非猫图像了。
您将使用神经网络思维方式建立Logistic回归。逻辑回归实际上是一个非常简单的神经网络!

在本练习中,您将执行以下步骤:

  • 初始化模型参数
  • 通过最小化成本来了解模型的参数
  • 使用学习到的参数进行预测(在测试集上)
  • 分析结果并得出结论

4-构建我们算法的各个部分

建立神经网络的主要步骤是:

  • 定义模型结构(例如输入要素的数量)
  • 初始化模型的参数循环:
    计算当前损耗(正向传播)
    计算当前梯度(向后传播)
    更新参数(梯度下降)

4.1sigmoid函数

在这里插入图片描述
在这里插入图片描述

4.2初始化参数

深度学习吴恩达作业题系列(1)_第18张图片

4.3前向传播和后向传播

在这里插入图片描述
深度学习吴恩达作业题系列(1)_第19张图片
dz=a-y;
dw=1/mXdz(机器学习推到过)
深度学习吴恩达作业题系列(1)_第20张图片
优化您已经初始化了参数。
您还可以计算成本函数及其梯度。
现在,您要使用梯度下降来更新参数。 对于参数θ,更新规则是 = − ,θ=θ-αdθ,在哪里,α是学习率。
深度学习吴恩达作业题系列(1)_第21张图片
上一个函数将输出学习到的w和b。 我们能够使用w和b来预测数据集X的标签。实现predict()函数。
在这里插入图片描述
深度学习吴恩达作业题系列(1)_第22张图片

5、将所有功能合并到模型中

深度学习吴恩达作业题系列(1)_第23张图片
深度学习吴恩达作业题系列(1)_第24张图片
深度学习吴恩达作业题系列(1)_第25张图片
深度学习吴恩达作业题系列(1)_第26张图片

6、进一步分析

通过改变学习率,寻找最合适的学习率。使得代价函数能够收敛。
深度学习吴恩达作业题系列(1)_第27张图片
深度学习吴恩达作业题系列(1)_第28张图片
由此看来0.01较为合适,但是还是未收敛,可以继续增大。
深度学习吴恩达作业题系列(1)_第29张图片
在这里插入图片描述

7、测试自己的图片

深度学习吴恩达作业题系列(1)_第30张图片

你可能感兴趣的:(深度学习吴恩达,python,神经网络,深度学习,吴恩达,numpy)