2017-08-11 145 views
0

我使用卷积神经网络读取街景视图门牌号(SVHN)数据,在tensorflow中编写代码。使用张量流损失函数输入dim 1指数超出范围

第一件事,我每幅图像的标签存储在数组中然后我读取的每个图像使用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: Index out of range using input dim 1; input has only 1 dims for 'strided_slice' (op: 'StridedSlice') with input shapes: [2], [2], [2], [2] and with computed input tensors: input[3] = <1 1>.

编辑:::

the code - >是工作只是固定每个地址的位数

回答

0

您正在尝试切割1D tensor使用2D索引。以下代码将起作用,您也可能需要重新考虑逻辑。

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)) 
+0

您可能会考虑将标签作为“2D张量”,否则不起作用。 –