如何使用Keras训练自己的CNN【程序+笔记1】

本文介绍了如何使用Keras训练卷积神经网络(CNN)。首先解析keras.json配置文件,然后详细阐述图片转换为矩阵的过程,包括图片的导入、尺寸调整和通道维度设置。接着,搭建了一个简单的ShallowNet模型,并展示了训练过程,使用了dogs vs cats数据集。最后,鼓励读者尝试自己训练网络。
摘要由CSDN通过智能技术生成

一. 理解keras的配置+图片转换为矩阵

在搭建自己的网络之前,我们首先看一下keras.json  这一个文件。

1. 理解keras.json 文件

    当你导入keras库的时候,keras会产生一个keras.json 文件,打开它(如果找不到就在安装keras库里面搜索)

    打开之后是这样的:

{
    "epsilon": 1e-07,
    "floatx": "float32",
    "image_data_format": "channels_last",
    "backend": "tensorflow"
}

在里面,你可以看到四个重要的参数,我们一一说一下它的作用。

(1) epsilon: 防止作除法时,分母为0

(2)float32:定义精度

(3) backend:keras库使用tensorflow作为后端,你也可以使用theano作为后端,将其改为theano

(4) image_data_format: 这个非常重要,这个值有两个类型:channels_last 和channels_first

                                           在opencv中,我们知道也是(rows,columns,channels), 即channels_last类型。

                                           但是在theano的设定中是channel_first的设定。


2. 导入图片, 并将图片转换为矩阵处理(有很多程序,不过一劳永逸,保存为package)

将一个project保存为这样的形式,我们一步一步往里面加东西

|--- pyimagesearch
| |--- __init__.py
| |--- datasets
| | |--- __init__.py
| | |--- SimpleDatasetLoader.py   #根据类名大写
| |--- preprocessing
| | |--- __init__.py
| | |--- ImageToArrayPreprocessor.py  #根据类名大写
| | |--- SimplePreprocessor.py

关于init文件,都是空的,不过必须要建立起作用。

第一步,打开preprocessing文件夹里面的

ImageToArrayPreprocessor.py

添加程序如下,这一步主要是将图片转换成矩阵的形式:

from keras.preprocessing.image import img_to_array

class ImageToArrayPreprocessor:
    def __init__(self,dataFormat=None):
        self.dataFormat=dataFormat

    def preprocess(self,image):
        return img_to_array(image,data_format=self.dataFormat)

第二步,打开preprocessing文件夹里面的

SimplePreprocessor.py

添加程序如下,这一步主要是可以rezise图片到你自己想要的大小

# -*- coding: utf-8 -*-

import cv2
class  SimplePreprocessor:
     def  __init__( self, width, height, inter=cv2.INTER_AREA):
         self.width=width
         self.height=height
         self.inter=inter
        
     def  preprocess( self, image):
         return cv2.resize(image,( self.width, self.height),  interpolation= self.i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值