【问题标题】:Tensorflow: Preparing input dataTensorflow:准备输入数据
【发布时间】:2017-11-02 02:00:18
【问题描述】:

我正在尝试从一篇研究论文中复制一个深度神经网络。架构可以在这里找到:

我已经完成了模型的设计,现在我正在尝试准备训练数据。我一直在使用此处找到的 tensorflow 教程作为指南:https://www.tensorflow.org/get_started/mnist/pros

在 mnist 数据的情况下,将 27x27 的图像转换为 x 的一维向量。另一方面,y_ 的形状为 [none, 10],因为每个图像都有可能以 10 种不同的方式标记 (0-9)

 x = tf.placeholder(tf.float32, shape=[None, 784])
 y_ = tf.placeholder(tf.float32, shape=[None, 10])

我的数据是 32x32x7 的 3d 图像,因此 x 很容易计算。

 x = tf.placeholder(tf.float32, shape=[None, 7168])

虽然我的图像是 32x32x7,但每个像素都有一个与之相关的密度和标签。我相信密度值将加载到 x 中,标签将加载到 y 中。这是一个正确的假设还是我应该以不同的方式加载我的数据?

 y_ = tf.placeholder(tf.float32, shape=[None, 7168])

【问题讨论】:

  • 你是对的:只要你试图解决的问题是确定给定图像的标签,包括密度,那么当你对标签进行一次热编码时,维度响应变量的维度将是标签的数量(因此可能小于 7168)。

标签: python tensorflow deep-learning conv-neural-network


【解决方案1】:

我的图像是 32x32x7,每个像素都有一个与之相关的密度和标签

如果是这样,那么网络的输出和目标 y_ 的形状将是:

[
 None,         # Batch size
 32 * 32 * 7,  # Vector size
 N             # N target labels (one hot encoded)
]

【讨论】:

  • 另外,根据您提供的解决方案,这是否意味着每个输入图像只有一个标签?我的印象是每个输入图像都会得到 7168 个标签(每个像素一个标签)
  • @DevinHaslam 每个像素都可以有N 可能的标签。 y = tf.nn.softmax(tf.tensordot(x, W, axes=[[1], [1]]) + L)W = tf.Variable(tf.zeros[7168, 7168, 10])L = tf.Variable(tf.zeros([7168, 10]))
  • 不幸的是,在“W = ...”行后我收到一个错误,说“函数”对象不可下标
  • @DevinHaslam W = tf.Variable(tf.zeros([7168, 7168, 10]))
  • @DevinHaslam 这取决于你的损失函数是如何定义的。如果b 的每个元素i 都包含一个索引,说明ith 像素具有哪个标签,那么您正在使用的b 应该可以工作。但是,根据损失函数的定义,您可能需要将其制成 one-hot 编码向量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 2022-01-14
  • 1970-01-01
  • 2016-12-09
  • 2020-02-10
  • 2021-10-25
  • 1970-01-01
相关资源
最近更新 更多