【问题标题】:Index out of range using input dim 1 in loss function using tensorflow使用张量流在损失函数中使用输入昏暗1的索引超出范围
【发布时间】:2018-01-20 01:00:58
【问题描述】:

我使用卷积神经网络在 TensorFlow 中编写代码来读取街景门牌号 (SVHN) 数据。

首先,我将每个图像的标签存储在一个数组中然后我使用 TFRecords 读取每个图像及其数组标签。例如::

我存储包含 5348 个地址的图像的标签,例如 [4,5,3,4,8,0]。索引 1 与地址(图像)中的位数有关,最后一个数字与此索引中的无位数有关,这意味着图像有 5 位而不是 4 位,有时有 3 或 2 个。

在图层步骤中。我使用了 5 个全连接层,我不确切知道(详细)为什么我应该这样做,但我知道标签中每个数字的每个 logit。然后我对每个 logits 的损失函数求和

   logits1 = fully_connected(network, 10, weights_init='xavier')  #activation='softmax'
   logits2 = fully_connected(network, 10, weights_init='xavier')
   logits3 = fully_connected(network, 10, weights_init='xavier')
   logits4 = fully_connected(network, 10, weights_init='xavier')
   logits5 = fully_connected(network, 10, weights_init='xavier')


   loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits1, labels= labels[:,1])) +\
                          tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits2, labels= labels[:,2])) +\
                          tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits3, labels= labels[:,3])) +\
                          tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits4, labels= labels[:,4])) +\
                          tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits3, labels= labels[:,5]))

错误是::

tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits4, labels= labels[:,4])) +\

ValueError: 使用输入昏暗 1 的索引超出范围;对于 'strided_slice' (op: 'StridedSlice'),输入只有 1 个暗淡,输入形状为:[2]、[2]、[2]、[2],计算输入张量为:input[3] = .

编辑:::

the code --> 每个地址的位数都是固定的

【问题讨论】:

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


    【解决方案1】:

    您正在尝试使用 2D 索引对 1D tensor 进行切片。以下代码可以工作,您可能还需要重新考虑逻辑。

    loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits1, labels= labels))                    tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits2, labels= labels)) +\
         tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits3, labels= labels)) +\
         tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits4, labels= labels)) +\
         tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits3, labels= labels))
    

    【讨论】:

    • 你可以考虑将标签设为2D tensor,否则将不起作用。
    猜你喜欢
    • 2019-08-06
    • 2021-10-15
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多