将神经网络与我自己的数据集结合使用

问题描述 投票:0回答:1

我从网上下载了很多人脸图像。为了学习 Tensorflow,我想将这些图像输入到具有单个隐藏层的简单全连接神经网络。我在here找到了示例代码。

我不知道如何使用下载的图像来训练、评估和测试网络。代码所有者使用了“.mat”文件和.pkl 文件。我不明白他是如何组织训练和测试集的。

为了用我的图像运行代码; 我是否需要将图像分为训练、测试和验证文件夹,并将每个文件夹转换为 mat 文件?我如何为培训提供标签?

此外,我不明白他为什么使用'.pkl'文件?

总而言之,我想更改此代码,以便我可以使用我的图像数据集找到测试集、训练集和验证集分类性能。

tensorflow neural-network deep-learning
1个回答
1
投票

首先,您不必使用

.mat
文件或泡菜。 Tensorflow 期望
numpy array

例如,假设您有 70000 张大小为 28x28(= 784 维度)的图像,属于 10 个类别。我们还假设您想训练一个简单的前馈神经网络来对图像进行分类。

第一步是在训练和测试之间分割图像(以及验证,但为了简单起见,让我们把它放在一边)。为了举例,我们假设您选择随机 60000 张图像作为训练集,10000 张图像作为测试集。

第二步是确保您的数据具有正确的格式。在这里,您希望训练集包含一个用于图像的形状为 (60000, 784)

 的 numpy 数组,以及另一个用于标签的形状为 
(60000, 10)
 的 numpy 数组(如果您使用 one-hot 编码来表示您的类)。至于您的测试集,您应该有一组形状为 
(10000, 784)
 的图像和一个形状为 
(10000, 10)
 的标签。

一旦有了这些大的 numpy 数组,您应该定义

placeholders

,这将允许您在训练和评估期间向网络提供数据。

images = tf.placeholder(tf.float32, shape=[None, 784]) labels = tf.placeholder(tf.int64, shape=[None, 10])

这里的

None

意味着你可以输入任意大小的批次,即任意数量的图像,只要你的numpy数组的形状为
(anything, 784)

第三步包括定义模型以及损失函数和优化器。

第四步

包括使用上面创建的占位符向网络提供随机批次的数据来训练网络。当您的网络正在训练时,您可以定期打印其性能,例如训练损失/准确度以及测试损失/准确度。 您可以在

这里

找到一个完整且非常简单的示例。

© www.soinside.com 2019 - 2024. All rights reserved.