【问题标题】:Non-square n-dimensional input in tflearn / understanding shapestflearn / 理解形状中的非正方形 n 维输入
【发布时间】:2018-06-07 10:14:58
【问题描述】:

我想知道:处理每个维度都有不同长度的 n 维输入数据的最佳方法是什么?假设我的输入数据如下所示:

input_data = n.array([
    [[0.4, -0.3, 0.43, 0.23], [5, 8]],
    [[0.3, -0.2, 0.34, 0.32], [4, 7]],
])

所以我可以想象根本不可能将它按原样提供给一个输入张量,因为矩阵不是正方形/均匀的,并且我只能在调用 tflearn.input_data 时描述正方形,例如:

input_data = n.array([
    [0.4, -0.3, 0.43, 0.23],
    [0.4, -0.3, 0.43, 0.23],
])
input_data = n.reshape(input_data, [-1, 4, 1])
input_layer = tflearn.input_data(shape=[None, 4, 1], name='input')

如果我猜对了,这里发生的情况是:我们将每个输入集的每个元素转换为一个包含 1 个元素的元组:

>>> input_data = n.reshape(input_data, [-1, 4, 1])
>>> input_data
array([[[ 0.4 ],
        [-0.3 ],
        [ 0.43],
        [ 0.23]],

       [[ 0.4 ],
        [-0.3 ],
        [ 0.43],
        [ 0.23]]])

当我们调用tflearn.input_data(shape=[None, 4, 1], name='input') 时,我们是在说:None 因为我们没有指定批量大小,所以第一个向量的长度会根据需要调整,4 和1 现在作为每个输入集由 4 个数组组成,每个数组有 1 个元素。 (..?还是“4个数组中的每一个都包含1个数组”?)

所以问题是: - 是否可以神奇地提供这样的数据/描述一个非方形的形状(所以对于第一个数据,它会类似于“输入数据是一个 n 长度的数组,其中每个条目是一个包含 2 个 1d 数组的数组长度为 4 和 2。” - 如果不可能,处理这种输入数据的最佳方法是什么?我们可以用0 填充较小向量的输入数据,但我不确定这是否是个好主意?作为替代方案,我们可以创建两个单独的输入张量并使用支持多个输入张量的网络。乍一看,这对我来说听起来更干净,但我不确定。

【问题讨论】:

    标签: tensorflow tflearn


    【解决方案1】:

    选项三:简单地将两个向量合并为一个。到目前为止似乎工作正常。

    【讨论】:

      猜你喜欢
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多