x = [1, 2, 3]
basic_sigmoid(x)
运行就会出错,原因就是这里建立的是数组,而数组不能用于该模块里面的函数,需要将其转化为向量列表在numpy库里面的函数中运行才行,在该库的方法中,根据Python的广播机制,向量列表可以和常数一起运算。
定义image2vector函数,将多为矩阵重塑为一维向量:
一般来说,将数据正则化有利于梯度下降收敛更快,在这里将x矩阵进行正则化。
5=sqrt(33+44+0)
softmax函数:主要将在负无穷到正无穷上的预测结果转换为正数的概率。主要分为两步:首先通过指数将结果全部转换成非负数,作为分子;然后分母是所有预测结果的指数的和。所有预测结果相加为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
问题陈述:您将获得一个包含以下内容的数据集(“ data.h5”):
我们在图像数据集(训练和测试)的末尾添加了“ _orig”,因为我们将对其进行预处理。 预处理之后,我们将得到train_set_x和test_set_x(标签train_set_y和test_set_y不需要任何预处理)。
train_set_x_orig和test_set_x_orig的每一行都是代表图像的数组。 您可以通过运行以下代码来形象化示例。 还可以随意更改索引值并重新运行以查看其他图像。
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。
接下来,将x矩阵里面颜色强度值除以255,将所有位置的颜色强度统一标准化到0~1之间。
预处理新数据集的常见步骤是:
现在是时候设计一种简单的算法来区分猫图像和非猫图像了。
您将使用神经网络思维方式建立Logistic回归。逻辑回归实际上是一个非常简单的神经网络!
在本练习中,您将执行以下步骤:
建立神经网络的主要步骤是:
dz=a-y;
dw=1/mXdz(机器学习推到过)
优化您已经初始化了参数。
您还可以计算成本函数及其梯度。
现在,您要使用梯度下降来更新参数。 对于参数θ,更新规则是 = − ,θ=θ-αdθ,在哪里,α是学习率。
上一个函数将输出学习到的w和b。 我们能够使用w和b来预测数据集X的标签。实现predict()函数。
通过改变学习率,寻找最合适的学习率。使得代价函数能够收敛。
由此看来0.01较为合适,但是还是未收敛,可以继续增大。