我正在尝试使用卷积神经网络来识别二进制矩阵中的模式,并将它们分类为两个类中的一个。目前我有一堆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相同的方式工作。
答案 0 :(得分:1)
我最喜欢的教程来自aymericdamien,下面是jupyter中卷积教程的链接(在github中备份所有教程中的几个目录)。
您会注意到他们的输入与您发布的内容相同:
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
。我认为我链接的教程提供了一个很好的例子,所以如果你有更具体的问题,我会把它们留给以后的帖子。