Tensorflow 实现二分类

本文记录了使用TensorFlow实现二分类问题的过程,通过Kaggle上的猫狗大战数据集进行训练。从数据准备到网络结构搭建,详细介绍了代码实现步骤。
摘要由CSDN通过智能技术生成

     刚刚开始接触TensorFlow,在网上找到一个老师的视频教学,关于利用简单的网络结构实现二分类,也就是猫狗大战的例子。于是对着视屏,自己做了如下的记录。如果有什么地方错误,欢迎大神指点!!!

1.准备数据集。https://www.kaggle.com/c/dogs-vs-cats   在Kaggle的官网上可以下载,如果想直接要数据的童鞋,可以私信我,我发给你,也是可以的。

2.程序结构如图:


3.下面就是关键代码:

input_data.py:

import tensorflow as tf
import numpy as np
import os

img_width=208
img_height=208
#train_dir='G:/PycharmProjects/untitled2/data/train/'
def get_files(file_dir):
    cats=[]
    label_cats=[]
    dogs=[]
    label_dogs=[]
    for file in os.listdir(file_dir):
        name=file.split(sep='.')#文件是cat.1.jpg形式
        if name[0]=='cat':
            cats.append(file_dir+file)
            label_cats.append(0)
        else:
            dogs.append(file_dir+file)
            label_dogs.append(1)
    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=[int(i) for i in label_list]

    return image_list,label_list
# 生成相同大小的批次
def get_batch(image,label,image_w,image_h,batch_size,capacity):
    image=tf.cast(image,tf.string)
    label=tf.cast(label,tf.int32)
    input_queue=tf.train.slice_input_producer([image,label])

    label=input_queue[1]
    image_contents=tf.read_file(input_queue[0])
    image=tf.image.decode_jpeg(image_contents,channels=3)  #解码jpg图片


    image=tf.image.resize_image_with_crop_or_pad(image,image_w,image_h) #图片过大  从中间裁剪
    image=tf.imag
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值