使用矩阵作为卷积神经网络的输入

时间:2018-01-24 22:34:09

标签: python-3.x tensorflow machine-learning

我正在尝试使用卷积神经网络来识别二进制矩阵中的模式,并将它们分类为两个类中的一个。目前我有一堆cxv格式的15x15矩阵。

为了了解卷积网络如何工作,我一直关注sentdex's tutorials on youtube。在此,他使用conv网络对MNIST数据集进行分类。他用来指定输入的代码如下:

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot = True)

x = tf.placeholder('float', [None, 784])
y = tf.placeholder('float')

我的问题是如何设置像" input_data'这样的文件。转发网可以从哪里读取我的矩阵和标签?我可以将所有训练数据都包含在一个文件中,还是需要将它们分成训练/测试文件?

我已经设置了以下格式的excel文件,但不确定它是否会以与MNIST相同的方式工作。

输入数据示例文件:
input data example file

1 个答案:

答案 0 :(得分:1)

我最喜欢的教程来自aymericdamien,下面是jupyter中卷积教程的链接(在github中备份所有教程中的几个目录)。

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/convolutional_network_raw.ipynb

您会注意到他们的输入与您发布的内容相同:

X = tf.placeholder(tf.float32, [None, num_input])
Y = tf.placeholder(tf.float32, [None, num_classes])

他们在conv_net()函数中做的第一件事就是将其重塑为图像:

x = tf.reshape(x, shape=[-1, 28, 28, 1])

形状参数理解如下:

  • -1:变量批量大小
  • 28:图像的高度(mnist是28x28灰度图像)
  • 28:图片的宽度
  • 1:颜色通道,灰度图像有1个颜色通道,RGB图像通常有3个。

尝试使用numpy重塑图像并自行显示以检查您是否正确:

import scipy.misc as misc
import numpy as np
img = np.reshape(flat_image, (28,28,1))
misc.imshow(img)

就训练和测试过程而言,张量流并不关心你的结构。我通常会将文件分开,以确保您不会意外地将测试集传递给您的培训过程。您最终需要在训练和测试数据集上单独调用sess.run。我认为我链接的教程提供了一个很好的例子,所以如果你有更具体的问题,我会把它们留给以后的帖子。