深度学习实践(一)

模模糊糊的选课终于结束了,猛然发现每周多了一天假期哇(不是)
一直在担心的军事理论也应该能重修了,如果疫情一直没有缓解的话,大方向应该是保研没错了(但真心想考一次托福,也想出去看看呢)
眼看快期末了,把上一周的深度学习入门的东西又看了看。第一次写了一个辨别猫脸的神经网络,读取文件的部分完全参考了别人的,学习参数的部分则是自己写的

# -*- coding: utf-8 -*-
"""
Created on Thu May 28 14:51:31 2020

@author: 容错率
"""

import numpy as np
import matplotlib.pyplot as plt
import h5py
from lr_utils import load_dataset

train_set_x_orig , train_set_y , test_set_x_orig , test_set_y , classes = load_dataset()

m_train = train_set_y.shape[1] #训练集里图片的数量。
m_test = test_set_y.shape[1] #测试集里图片的数量。
num_px = train_set_x_orig.shape[1] #训练、测试集里面的图片的宽度和高度(均为64x64)。

#现在看一看我们加载的东西的具体情况


print ("训练集的数量: m_train = " + str(m_train))
print ("测试集的数量 : m_test = " + str(m_test))
print ("每张图片的宽/高 : num_px = " + str(num_px))
print ("每张图片的大小 : (" + str(num_px) + ", " + str(num_px) + ", 3)")
print ("训练集_图片的维数 : " + str(train_set_x_orig.shape))
print ("训练集_标签的维数 : " + str(train_set_y.shape))
print ("测试集_图片的维数: " + str(test_set_x_orig.shape))
print ("测试集_标签的维数: " + str(test_set_y.shape))

#将训练集的维度降低并转置。
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 ("训练集降维最后的维度: " + str(train_set_x_flatten.shape))
print ("训练集_标签的维数 : " + str(train_set_y.shape))
print ("测试集降维之后的维度: " + str(test_set_x_flatten.shape))
print ("测试集_标签的维数 : " + str(test_set_y.shape))

train_set_x = train_set_x_flatten / 255
test_set_x = test_set_x_flatten / 255



def sig(x):
    return 1/(1 + np.exp(-x))

a=np.zeros(shape = (m_train,1));
def cost(w,b):
    re=0
    for i in range(m_train):
      re=re+(train_set_y[0][i]*np.log(a[i][0]))+(1-train_set_y[0][i])*np.log(1-a[i][0])
   #   re=re+1
   
    return re/(m_train*(-1.0))
def cal(w,b,j):
    te=0;
    for i in range(train_set_x.shape[0]):
     #for i in range(10):
        #te=te+w[0][i]*train_set_x[i][j]
      #  print(w.shape)
        te=te+w[i][0]*train_set_x[i][j]
    te=te+b
    a[j][0]=sig(te)
    return sig(te)
    
def daow(w,b):
    
    jian = np.zeros(shape = (train_set_x.shape[0],1));
    for i in range(train_set_x.shape[1]):
        a[i][0]=cal(w,b,i);
    
    
    for i in range(train_set_x.shape[0]):
    #for i in range(10):
        dao=0
        for j in range(train_set_x.shape[1]):
          #  print(str(w.shape)+" "+str(train_set_y.shape))
    
          #  dao=dao+(cal(w,b,j)-train_set_y[0][j])*w[i][0];
            dao=dao+(a[j][0]-train_set_y[0][j])*w[i][0];
            #dao=dao+cal(w,b,j)
         
            jian[i][0]=dao/(m_train*1.0)
    return jian
def daob(w,b):
    t=0;
    for j in range(train_set_x.shape[1]):
          #  print(str(w.shape)+" "+str(train_set_y.shape))
    
          #  dao=dao+(cal(w,b,j)-train_set_y[0][j])*w[i][0];
            t=t+(a[j][0]-train_set_y[0][j])*1>0;
    return t/(m_train*1.0)


def work():
     w = np.zeros(shape = (train_set_x.shape[0],1));
     b=0;
     print(w.shape)
     
     for i in range(0,10000):
         ccost=cost(w,b);
         tew=w-0.01*daow(w,b)
         teb=b-0.01*daob(w,b)
         w=tew
         b=teb
         
         
         if i%50==0:
             print(str(ccost)+" "+str(i));

work();

学习率为0.01

在这里插入图片描述

学习率为0.1

在这里插入图片描述

学习率为0.5

在这里插入图片描述

学习率为5

在这里插入图片描述

学习率为25

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值