吴恩达深度学习作业之deepleraning_L1W2_h2

https://www.heywhale.com/mw/project/5dd23dbf00b0b900365ecef1

#吴恩达《深度学习》L1W2作业2 知识点:用神经网络思想实现逻辑回归
'''
欢迎来到你的第一个编程作业! 你将学习如何建立逻辑回归分类器用来识别猫。 
这项作业将引导你逐步了解神经网络的思维方式,同时磨练你对深度学习的直觉。

说明:
除非指令中明确要求使用,否则请勿在代码中使用循环(for / while)。

你将学习以下内容:

建立学习算法的一般架构,包括:
初始化参数
计算损失函数及其梯度
使用优化算法(梯度下降)
按正确的顺序将以上所有三个功能集成到一个主模型上。
'''

'''
1- 安装包
首先,让我们运行下面的单元格,以导入作业中所需的包。

numpy 是Python科学计算的基本包。
h5py是一个常用的包,可以处理存储为H5文件格式的数据集。
matplotlib是一个著名的Python图形库。
这里最后通过[PIL](http://www.pythonware.com/products/pil/)
和[scipy](https://www.scipy.org/) 使用你自己的图片去测试模型效果。
'''
import numpy as np
import matplotlib.pyplot as plt
import h5py
import scipy

#from lrutils import load_dataset 
#数据集导入
import os
os.chdir('E:\deepleraning\course\L1W2_h2')
train_data=h5py.File('train_catvnoncat.h5','r');test_data=h5py.File('test_catvnoncat.h5','r')
train_X=np.array(train_data['train_set_x']);train_y=np.array(train_data['train_set_y']);train_classes=train_data['list_classes']
test_X=np.array(test_data['test_set_x']);test_y=np.array(test_data['test_set_y']);test_classes=test_data['list_classes']
os.chdir('E:\ML')
from ex4NN2 import *
'''
你需要记住的内容:

预处理数据集的常见步骤是:

找出数据的尺寸和维度(m_train,m_test,num_px等)
重塑数据集,以使每个示例都是大小为(num_px \ num_px \ 3,1)的向量
“标准化”数据
机器学习中一个常见的预处理步骤是对数据集进行居中和标准化,这意味着你要从每个示例中减去整个numpy数组的均值,
然后除以整个numpy数组的标准差。
但是图片数据集则更为简单方便,并且只要将数据集的每一行除以255(像素通道的最大值),效果也差不多。
'''


alpha=0.002
iterations=1000
num_units=[12288,2]
labels=[0,1]

init_theta=randTheta(num_units)
X=np.reshape(train_X,(209,-1))/255
X2=np.reshape(test_X,(50,-1))/255
Y=y_to_Y(train_y,labels)
Y2=y_to_Y(test_y,labels)
best_theta1,J_list1=gradientDescent(costGradFun,init_theta,X,Y,num_units,alpha,iterations,1,sigmoid,sigmoid)
best_theta2,J_list2=gradientDescentWithMomentum(costGradFun,init_theta,X,Y,num_units,alpha,iterations,1,sigmoid,sigmoid)


figure,axs=plt.subplots(1,2)
axs[0].plot(J_list1)
axs[1].plot(J_list2)
print('gradientDescent')
print(nnScore(best_theta1,X,Y,num_units,labels,sigmoid,sigmoid))
print(nnScore(best_theta1,X2,Y2,num_units,labels,sigmoid,sigmoid))
print('gradientDescentWithMomentum')
print(nnScore(best_theta2,X,Y,num_units,labels,sigmoid,sigmoid))
print(nnScore(best_theta2,X2,Y2,num_units,labels,sigmoid,sigmoid))


alpha=1e-5
iterations=200
best_theta3,J_list3=RMSprop(costGradFun,init_theta,X,Y,num_units,alpha,iterations,1,sigmoid,sigmoid)
best_theta4,J_list4=Adam(costGradFun,init_theta,X,Y,num_units,alpha,iterations,1,sigmoid,sigmoid)
figure2,axs2=plt.subplots(1,2)
axs2[0].plot(J_list3)
axs2[1].plot(J_list4)
print('RMSprop')
print(nnScore(best_theta1,X,Y,num_units,labels,sigmoid,sigmoid))
print(nnScore(best_theta1,X2,Y2,num_units,labels,sigmoid,sigmoid))
print('Adam')
print(nnScore(best_theta2,X,Y,num_units,labels,sigmoid,sigmoid))
print(nnScore(best_theta2,X2,Y2,num_units,labels,sigmoid,sigmoid))

 

'''
现在是时候设计一种简单的算法来区分猫图像和非猫图像了。

你将使用神经网络思维方式建立Logistic回归。 “逻辑回归实际上是一个非常简单的神经网络!”
在本练习中,你将执行以下步骤:

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

os.chdir('E:\deepleraning\course\L1W2_h2')
from PIL import Image
img=Image.open('cat_in_iran.jpg')
img2=img.resize((64,64))
x=np.array(img2)
x=x.reshape(1,-1)
xx=np.array(img)[:64,:64,:]
xx=xx.reshape(1,-1)
#predict(best_theta,input_X,num_units,labels,activationFun=relu,outputFun=sigmoid)
print(predict(best_theta1,x,num_units,labels,sigmoid,sigmoid))
print(predict(best_theta1,xx,num_units,labels,sigmoid,sigmoid))
fig3,axs3=plt.subplots(1,2)
axs3[0].imshow(x.reshape(64,64,3))
axs3[1].imshow(xx.reshape(64,64,3))

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值