吴恩达深度学习L4W1—卷积神经网络

看课程之后,对卷积神经网络的层次更加清晰。复现代码,加深一下印象。(本博文的代码,参考了其他博主的博文,并且此博文只作为本人学习记录笔记。帮助自己理顺思路和了解网络结构)

准备

a、需要导入的包

import numpy as np
import  math
import h5py
import matplotlib.pyplot as plt
import tensorflow as tf
import matplotlib.image as mpimg
from tensorflow.python.framework import ops

from CNNDeepL4W1 import cnn_utils  #导入加载数据的文件


np.random.seed(1) #设置随机种子

b、我的项目结构 

项目结构

1、加载本地数据集

此处的数据集使用的是之前吴恩达老师提供的手势图片数据集。因为图片识别经常会用到读取数据集这一操作,因此把加载数据放在一独立的文件中,方便以后使用。此文件名为 cnn_utils.py.

#导入需要的包
import math
import numpy as np
import h5py

#读取本地数据
def load_dataset():
    train_dataset = h5py.File('datasets\dtrain_signs.h5', "r")  #这里的路径修改为自己数据集的路径
    train_set_x_orig = np.array(train_dataset["train_set_x"][:]) # your train set features
    train_set_y_orig = np.array(train_dataset["train_set_y"][:]) # your train set labels
    test_dataset = h5py.File('datasets\dtest_signs.h5', "r")
    test_set_x_orig = np.array(test_dataset["test_set_x"][:]) # your test set features
    test_set_y_orig = np.array(test_dataset["test_set_y"][:]) # your test set labels
    classes = np.array(test_dataset["list_classes"][:]) # the list of classes
    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]))
    print(train_set_y_orig.shape)
    return train_set_x_orig, train_set_y_orig, test_set_x_orig, test_set_y_orig, classes

2、框架搭建

本简单卷积网络的层次主要为:卷积-池化-卷积-池化-全连接-输出。卷积后采用relu函数为激活函数。

(1)、本次卷积网络使用tensorFlow框架进行搭建,因此首先创建占位符

def create_placeholders(n_H0, n_W0, n_C0, n_y):
    """
    为session创建占位符

    参数:
        n_H0 - 实数,输入图像的高度
        n_W0 - 实数,输入图像的宽度
        n_C0 - 实数,输入的通道数
        n_y  - 实数,分类数

    输出:
        X - 输入数据的占位符,维度为[None, n_H0, n_W0, n_C0],类型为"float"
        Y - 输入数据的标签的占位符,维度为[None, n_y],维度为"float"
    """
    X = tf.placeholder(tf.float32, [None, 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值