【发布时间】:2016-12-30 23:11:23
【问题描述】:
我正在尝试使用多层编码器-解码器类型的网络。最后几层网络架构的截图如下。这就是我设置模型编译和训练过程的方式。
optimizer = SGD(lr=0.001, momentum=0.9, decay=0.0005, nesterov=False)
autoencoder.compile(loss="sparse_categorical_crossentropy", optimizer=optimizer, metrics=['accuracy'])
model.fit(imgs_train, imgs_mask_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1,callbacks=[model_checkpoint])
imgs_train 和 imgs_mask_train 的形状为 (2000, 1, 128, 128)。 imgs_train 代表原始图像,imgs_mask_train 代表蒙版图像。我正在尝试解决语义分割问题。但是,运行程序会产生以下错误消息,(我只保留主要相关部分)。
tensorflow.python.pywrap_tensorflow.StatusNotOK: Invalid argument: logits first dimension must match labels size. logits shape=[4096,128] labels shape=[524288]
[[Node: SparseSoftmaxCrossEntropyWithLogits = SparseSoftmaxCrossEntropyWithLogits[T=DT_FLOAT, Tlabels=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"](Reshape_364, Cast_158)]]
在我看来,sparse_categorical_crossentropy 的损失函数会导致当前 (imgs_train, imgs_mask_train) 形状设置出现问题。 Keras API 不包含有关如何设置目标张量的详细信息。任何建议都非常感谢!
【问题讨论】:
标签: tensorflow keras