horse-or-human神经网络搭建

本文介绍了如何进行图像数据预处理,包括创建数据生成器,对图片进行缩放和批量处理。使用TensorFlow搭建了一个简单的卷积神经网络模型,包括多层卷积和池化,并通过ImageDataGenerator进行数据增强。模型训练过程中,采用了二元交叉熵作为损失函数,Adam优化器,最终对验证数据集进行了评估。
摘要由CSDN通过智能技术生成

下载数据

训练数据集:horse-or-human
测试数据集:validation-hrose-or-human
解压完成后每个文件夹中都含有两个文件夹一个为hores另一个为human,这样便于对图片进行标签化处理
在这里插入图片描述

创建图片数据生成器

当图片数据过大,且图片的尺寸不一致时,就需要对图片进行预处理操作,将其裁剪成规定大小的图片,然后再生成器中要指定每个批次中要训练的图片的数量,且要规定图片的class类型,便于分类

# 创建两个数据生成器,指定器scala为0-1
train_dataGen = ImageDataGenerator(rescale=1/255)
test_dataGen = ImageDataGenerator(rescale=1/255)
# 给定图片的位置,尺寸和批次大小
train_generator = train_dataGen.flow_from_directory(
        'E:/datasets/tmp/horse-or-human',
        target_size=(300, 300),
        batch_size=32,
        class_mode='binary')
test_generator = test_dataGen.flow_from_directory(
        'E:/datasets/tmp/validation-horse-or-human',
        target_size=(300, 300),
        batch_size=32,
        class_mode='binary')

搭建神经网络

简单的使用一层卷积,一层池化,这样的结构搭建4层卷积网络,然后再进行一次卷积,让后将其全连接,最后规定输出只有1位,要么是,要么不是

model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(16 ,(3, 3), input_shape=(300, 300, 3), activation=tf.nn.relu, padding='same', name='conv-1'),
    tf.keras.layers.MaxPool2D((2, 2), name='pool-1'),
    tf.keras.layers.Conv2D(32, (3, 3), activation=tf.nn.relu, padding='same', name='conv-2'),
    tf.keras.layers.MaxPooling2D((2,2), name='pool-2'),
    tf.keras.layers.Conv2D(64, (3, 3), activation=tf.nn.relu, padding='same', name='conv-3'),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(1, activation=tf.nn.sigmoid)
])
model.compile(optimizer=tf.optimizers.Adam(learning_rate=0.01),loss=tf.losses.binary_crossentropy)

输入数据到神经网络

model.fit(train_generator,
epoch=3,
verbose=1,
validation_data=test_generator,
validation_steps=8)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值