当前位置:   article > 正文

吴恩达深度学习L1W2逻辑回归神经网络识别猫_l1w2_数据集

l1w2_数据集

用神经网络思想实现Logistic回归分类器用来识别猫

1-问题描述
问题说明:你将获得一个包含以下内容的数据集("data.h5"):


- 标记为cat(y = 1)或非cat(y = 0)的m_train训练图像集
- 标记为cat或non-cat的m_test测试图像集
- 图像维度为(num_px,num_px,3),其中3表示3个通道(RGB)。 因此,每个图像都是正方形(高度= num_px)和(宽度= num_px)。

将构建一个简单的图像识别算法,该算法可以将图片正确分类为猫和非猫。

 2-装包
- numpy 是Python科学计算的基本包。
- h5py是一个常用的包,可以处理存储为H5文件格式的数据集。
- matplotlib是一个著名的Python图形库。

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import matplotlib
  4. import h5py
  5. import scipy
  6. from PIL import Image
  7. from scipy import ndimage
  8. from lr_utils import load_dataset
  9. %matplotlib inline

通过运行以下代码来加载数据。

  1. #加载数据(猫/非猫)
  2. train_set_x_orig, train_set_y, test_set_x_orig, test_set_y, classes = load_dataset()

我们在图像数据集(训练和测试)的末尾添加了"_orig",以便对其进行预处理。 预处理后,我们将得到train_set_x和test_set_x(标签train_set_y和test_set_y不需要任何预处理)。


train_set_x_orig和test_set_x_orig的每一行都是代表图像的数组。 可以通过运行以下代码来可视化示例。 可以随意更改index值并重新运行以查看其他图像。

  1. # 显示图片例子
  2. index = 25
  3. plt.imshow(train_set_x_orig[index])
  4. print ("y = " + str(train_set_y[:, index]) + ", it's a '" + classes[np.squeeze(train_set_y[:, index])].decode("utf-8") + "' picture.")
  5. #squeeze函数用于去掉维度为1的条目

“ train_set_x_orig”是一个维度为(m_train,num_px,num_px,3)的numpy数组。 例如,你可以通过编写“ train_set_x_orig.shape [0]”来访问“ m_train”。

  1. m_train = train_set_x_orig.shape[0]
  2. m_test = test_set_x_orig.shape[0]
  3. num_px = train_set_x_orig.shape[1]
  4. print ("Number of training examples: m_train = " + str(m_train))
  5. print ("Number of testing examples: m_test = " + str(m_test))
  6. print ("Height/Width of each image: num_px = " + str(num_px))
  7. print ("Each image is of size: (" + str(num_px) + ", " + str(num_px) + ", 3)")
  8. print ("train_set_x shape: " + str(train_set_x_orig.shape))
  9. print ("train_set_y shape: " + str(train_set_y.shape))
  10. print ("test_set_x shape: " + str(test_set_x_orig.shape))
  11. print ("test_set_y shape: " + str(test_set_y.shape))

向量化

为了方便起见,你现在应该以维度(num_px ∗num_px ∗3, 1)的numpy数组重塑维度(num_px,num_px,3)的图像。 此后,我们的训练(和测试)数据集是一个numpy数组,其中每列代表一个展平的图像。 应该有m_train(和m_test)列。

当你想将维度为(a,b,c,d)的矩阵X展平为形状为(b∗c∗d, a)的矩阵X_flatten时的一个技巧是:
X_flatten = X.reshape(X.shape [0],

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/385290
推荐阅读
相关标签
  

闽ICP备14008679号