繁体   English   中英

Logit和标签的形状不兼容

[英]Shapes of logits and labels are incompatible

完整的错误消息是这样的:

ValueError:形状(2,1)和(50,1)不兼容

它是在训练我的模型时发生的。 错误之一是在我的input_fn中:

train_input_fn = tf.estimator.inputs.numpy_input_fn(
    x = {"x" : training_data},
    y = training_labels,
    batch_size = 50,
    num_epochs = None,
    shuffle = True)

在我的登录和损失功能中:

dense = tf.layers.dense(inputs = pool2_flat, units = 1024, activation = tf.nn.relu)
dropout = tf.layers.dropout(inputs = dense, rate = 0.4, training = mode == tf.estimator.ModeKeys.TRAIN)
logits = tf.layers.dense(inputs = dropout, units = 1)

loss = tf.losses.softmax_cross_entropy(labels = labels, logits = logits)

或在我的数据集中 我只能打印出数据集的形状,以供您查看。

#shape of the dataset
train_data.shape
(1196,2,1)
train_data[0].shape
(2,1)

#this is the data
train_data[0][0].shape
(1,)
train_data[0][0][0].shape
(20,50,50)

#this is the labels
train_data[0][1].shape
(1,)

问题似乎是logit的形状。 在这种情况下[batch_size, num_classes]它们应为[batch_size, num_classes] [50,1]但应为[2,1] 标签的形状正确[50,1]

如果您想看一下整个代码,我已经做了一个github要点。 https://gist.github.com/hjkhjk1999/38f358a53da84a94bf5a59f44050aad5

在您的代码中,您指出模型的输入将以每批50个样本的批次分批进给,并带有一个变量。 但是,尽管您喂入形状为[50, 1]标签,但看起来您实际上正在喂入一批具有1个变量( shape=[2, 1] )的2个样本。

这就是问题所在,您要给出50个“问题”和两个“答案”。

而且,您的数据集的形状非常怪异。 我看到您将您的github gist 3D Conv命名为。 如果确实要进行3D卷积,则可能需要将数据集重塑为具有以下形状的张量(numpy数组) shape = [samples, width, height, deepth]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM