Tensorflow2.6 Keras 实现kaggle猫狗大战

数据集在kaggle官网获取。不知为何CSDN资源没办法上传。

Dogs vs. Cats | KaggleCreate an algorithm to distinguish dogs from catshttps://www.kaggle.com/c/dogs-vs-cats

首先是制作数据集

input_data.py

import tensorflow as tf
import numpy as np
import os
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

'''
从原始数据集中获取图片和标签
对所得图像进行预处理
'''


class readData(object):

    def __init__(self, io='../data/train/'):
        """
        初始化
        :param io: 数据集路径
        """

        self.val_dataset = None
        self.train_dataset = None
        self.io = io
        self.image_list = None  # 图像路径
        self.label_list = None  # 对应标签
        self.label_names = ['cat', 'dog']

    def get_files(self):

        # return: 乱序后的图片和标签
        cats = []
        label_cats = []
        dogs = []
        label_dogs = []
        file_dir = self.io
        # 载入数据路径并写入标签值
        for file in os.listdir(file_dir):
            name = file.split(sep='.')
            if name[0] == 'cat':
                cats.append(file_dir + file)
                label_cats.append(0)  # 猫猫置0
            else:
                dogs.append(file_dir + file)
                label_dogs.append(1)  # 狗狗置1
        print("There are %d cats\nThere are %d dogs" % (len(cats), len(dogs)))

        # 合并猫狗图片路径和标签
        image_list = np.hstack((cats, dogs))
        label_list = np.hstack((label_cats, label_dogs))
        # 将图片和标签合并为矩阵
        temp = np.array([image_list, label_list])
        temp = temp.transpose()  # 转置
        # 乱序
        np.random.shuffle(temp)
        # 返回乱序后图片路径和标签
        image_list = list(temp[:, 0])
        label_list = list(temp[:, 1])
        label_list = np.asarray(label_list).astype(np.int)  # 整数标签
        self.image_list = image_list
        self.label_list = label_list
        label_list = np.eye(2)[label_list]  # 转为one-hot矩阵

        return image_list, label_list

    def load_and_preprocess_image(self, path):
        image = tf.io.read_file(path)
        image = tf.image.decode_jp
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值