【问题标题】:Using matrices as input to convolutional neural network使用矩阵作为卷积神经网络的输入
【发布时间】:2018-01-25 08:06:19
【问题描述】:

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

为了了解卷积网络的工作原理,我一直在关注sentdex's tutorials on youtube。在此,他使用卷积网络对 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”这样的文件,conv 网络可以从中读取我的矩阵和标签?我可以将所有训练数据包含在一个文件中,还是需要将它们拆分为训练/测试文件?

我已经设置了一个以下格式的 excel 文件,但不确定它是否能像 MNIST 一样工作。

输入数据示例文件:

【问题讨论】:

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


    【解决方案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)
    

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

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 2021-03-30
      • 2017-07-30
      • 2017-08-31
      • 2020-05-26
      • 2017-01-01
      • 1970-01-01
      • 2020-08-16
      相关资源
      最近更新 更多