技术标签: python logistic 吴恩达第二周编程作业 吴恩达深度学习课后习题
在本文开始之前首先声明,本文参考Logistic Regression with a Neural Network mindset,我基于他的文章加以自己的理解发表这篇博客。
本文所用资料已上传百度云盘【点击下载】,请在开始之前将文件下载好,确保在python根目录下有lr_utils.py和数据集文件夹。
首先,将本次设计所要使用的几个库引用进来:
import numpy as np
import h5py
import matplotlib.pyplot as plt
from lr_utils import load_dataset
lr_utils.py库中代码如下,也可以自行打开查看:
import numpy as np
import h5py #h5py:Python与H5文件交互的库
def load_dataset(): #定义下载函数
train_dataset = h5py.File('datasets/train_catvnoncat.h5', "r") #读取训练数据集
train_set_x_orig = np.array(train_dataset["train_set_x"][:]) #读取训练数据集里面的图像数据
train_set_y_orig = np.array(train_dataset["train_set_y"][:]) #读取训练数据集里面的图像对应的分类值(0/1)
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"][:]) #读取测试数据集里面的图像对应的分类值(0/1)
classes = np.array(test_dataset["list_classes"][:]) #保存的是以Bytes类型保存的两个字符串数据集
#数据为:【'non-cat','cat'】
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
解释一下上面库中部分代码意思:
接下来我们将数据加载到主函数中:
train_set_x_orig , train_set_y , test_set_x_orig , test_set_y , classes = load_dataset()
首先我们需要知道:train_set_x_orig是一个维度为(m_ train,num_px,num_px,3)的数组(test和train的维度相同),train_set_y是一个维度为(1,m_ train)的数组。
m_train = train_set_y.shape[1]
### 训练样本数,也等于train_set_x_orig.shape[0] ###
m_test = test_set_y.shape[1]
### 测试样本数,也等于test_set_x_orig.shape[0] ###
num_px = train_set_x_orig.shape[1]
### 图片像素 ###
然后看一下我们加载的数据
print ("Number of training examples: m_train = " + str(m_train))
print ("Number of testing examples: m_test = " + str(m_test))
print ("Height/Width of each image: num_px = " + str(num_px))
print ("Each image is of size: (" + str(num_px) + ", " + str(num_px) + ", 3)")
print ("train_set_x shape: " + str(train_set_x_orig.shape))
print ("train_set_y shape: " + str(train_set_y.shape))
print ("test_set_x shape: " + str(test_set_x_orig.shape))
print ("test_set_y shape: " + str(test_set_y.shape))
运行结果:
Number of training examples: m_train = 209
Number of testing examples: m_test = 50
Height/Width of each image: num_px = 64
Each image is of size: (64, 64, 3)
train_set_x shape: (209, 64, 64, 3)
train_set_y shape: (1, 209)
test_set_x shape: (50, 64, 64, 3)
test_set_y shape: (1, 50)
我们已经知道一张图片是由64×64像素构成的,每个像素点是由三原色(R,G,B)组成的,所以要乘上如图3所示,这样一张图片可以表示为numpy的数组(64,64,3)中,为了方便,我们需要将维度降低,将其构成一个(64X64X3,1)的numpy数组。这样我们的训练集和测试集是一个numpy数组,每一列代表一个平坦的图像。
使用以下代码可以实现将维度为(a,b,c,d)的矩阵平铺为(b * c * d,a)的矩阵X_flatten。
train_set_x_flatten = train_set_x_orig.reshape(train_set_x_orig.shape[0], -1).T
### 将训练集的维度降低并转置 ###
test_set_x_flatten = test_set_x_orig.reshape(test_set_x_orig.shape[0], -1).T
### 将测试集的维度降低并转置 ###
print ("train_set_x_flatten shape: " + str(train_set_x_flatten.shape))
print ("test_set_x_flatten shape: " + str(test_set_x_flatten.shape))
已经知道train_set_x_orig.shape [0]是图片数量,使用重塑就构成了209行,然后多少列我并不知道可以让电脑自己去算,直接采用-1,最后得出结果是12288列。再转置一下我们就可以得到一个12288行,209列的一个矩阵。
降维后的情况:
train_set_x_flatten shape: (12288, 209)
test_set_x_flatten shape: (12288, 50)
因为一个像素点的颜色是由RGB三个值来表现的,所以像素点矩阵对应三个颜色向量矩阵,其值为从0到255的范围内数字。在机器学习中对数据进行预处理最常见的步骤是特征缩放和均值归一化。
特征缩放:目的是为了让梯度下降运行的更快一点,为了将特征的取值约束在-1到1之间,我们可以用数据集除上极差(最大值与最小值之差)
均值归一化:将特征值变为平均值为0的特征值采用公式,其中为数据集的平均值,S为极差。
对于图片数据集,数据集的每一行都直接除以255(像素通道的最大值),因为在RGB中不存在比255大的数据,所以我们可以放心的除以255,让标准化的数据位于[ 0,1]之间,现在标准化我们的数据集就可以得到最终数据处理后的数据集:
train_set_x = train_set_x_flatten / 255
### 对数据集进行居中和标准化 ###
test_set_x = test_set_x_flatten / 255
### 因为在RGB中不存在比255大的数据,可以放心除以像素通道的最大值 ###
数据加载完之后,我们可以看一下我们的数据集里面的图片以及处理后的数据是什么样子的。
### 标签数据 ###
print("train_set_y shape : " + str(train_set_y.shape))
print("train_set_y=" + str(train_set_y))
print("test_set_y shape : " + str(test_set_y.shape))
print("test_set_y=" + str(test_set_y))
train_set_y shape : (1, 209)
train_set_y=[[0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0
文章浏览阅读7.8k次,点赞6次,收藏9次。<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> .main { position: relative; ..._利用contenteditable实现textarea即支持tags标签也支持文本的实现方式
文章浏览阅读300次,点赞9次,收藏10次。C#连接Access数据库,C#操作Access数据库
文章浏览阅读3k次。在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢?Load Average是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。通过下面的几个部分的了解,可以一步一步的找出Load Averag_uptime load average 转换成cpu
文章浏览阅读5.3k次,点赞2次,收藏35次。《网上商城购物系统黑盒测试》由会员分享,可在线阅读,更多相关《网上商城购物系统黑盒测试(7页珍藏版)》请在人人文库网上搜索。1、网上商城购物系统黑盒测试一、目的和意义软件测试是软件工程中非常重要的环节,是软件质量的保证。该课程是培养训练学生软件质量保证能力的重要实践性教学环节,与软件测试技术课程的教学内容紧密配合,同步进行。通过软件测试的实践训练,深刻理解和掌握软件测试和软件测试过程的基本方法和基..._对指定电子商务网站的接受订单的网页创建功能测试,根据动态黑盒测试方法设计
文章浏览阅读612次,点赞8次,收藏11次。不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~给大家准备的学习资料包括但不限于:Python 环境、pycharm编辑器/永久激活/翻译插件python 零基础视频教程Python 界面开发实战教程Python 爬虫实战教程Python 数据分析实战教程python 游戏开发实战教程Python 电子书100本。
文章浏览阅读4.5k次,点赞11次,收藏43次。构建知识体系中,有相同爱好的朋友一起加油呀。_运筹学好玩的问题
文章浏览阅读511次。1.下载以下两个文件,放入php ext目录及system32 php_sqlsrv_52_ts_vc6.dll (线程安全) php_sqlsrv_52_nts_vc6.dll (非线程安全) vc6用于Apache,vc9用于IIS 2.修改php.ini extension=php_sqlsrv_52_ts_vc6.dll 3.下载sqlncli.msi,微软官方可以_php7.1联接mssmql2005
文章浏览阅读362次。1、gitreset--hardFETCH_HEAD2、gitpull就会成功。3、void imu_data::publish()其他线程和主线程一样,只有当强制要求退出时,才会去退出,SafeCloseThread(thread_deamon_, run_deamon_); 当然也可以控制休眠,一秒去执行一次,但是需要去主动退出,while循环,不然不会自己主动退出..._实际项目代码
文章浏览阅读1.7w次,点赞4次,收藏15次。转载自:http://www.jb51.net/article/66711.htm本文实例讲述了C++联合体union用法。分享给大家供大家参考。具体如下:我们应该按照C中的convention去使用union,这是我这篇文章要给出的观点。虽然C++使得我们可以扩展一些新的东西进去,但是,我建议你不要那样去做,看完这篇文章之后,我想你大概也是这么想的。 C由于没有类的概念,所有类型其实都可以看作..._c++语言union和struct的运用例题
文章浏览阅读562次。按照网上常说的在hfssExePath路径处添加双引号,但是还是有这个错误。生成的VBS文件用hfss单独打开是没问题的,有大佬知道这个怎么解决吗。_hfss an error
文章浏览阅读247次。随着电脑使用时间的变长,磁盘空间可能会逐渐减少。磁盘空间不足怎么清理呢?小编总结了几个简单有效的方法,有需要的朋友快来试试吧。如果担心清理过程误删文件,也可以这样恢复!_电脑硬盘空间太少如何清理大文件 csdn
文章浏览阅读945次。项目中使用ETCD来实现服务发现和配置信息的存储,最近我抽空研究了一下ETCD和背后的一致性算法 — Raft算法的逻辑。ETCD是什么ETCD是一个go语言实现的高可靠的KV存储系统,支持HTTP协议的PUT/GET/DELETE操作; 为了支持服务注册与发现,支持WATCH接口(通过http long poll实现); 支持KEY持有TTL属性; CAS(compare and ..._etcd 强一致性原理 prepare commit