【问题标题】:Keras error with shape of neural network与神经网络形状有关的 Keras 误差
【发布时间】:2018-03-23 07:00:35
【问题描述】:

请帮忙处理下面的代码,错误似乎与输出的形状有关,但我不确定我应该改变什么,我的输入是 X,训练数据的标签是 y(见代码)

def model(load, shape, checkpoint=None):
    """Return a model from file or to train on."""
    if load and checkpoint: return load_model(checkpoint)

    conv_layers, dense_layers = [32, 32, 64, 128], [1024, 512]

    model = Sequential()
    model.add(Convolution2D(32, 3, 3, activation='elu', input_shape=shape))
    model.add(MaxPooling2D())
    for cl in conv_layers:
        model.add(Convolution2D(cl, 3, 3, activation='elu'))
        model.add(MaxPooling2D())
    model.add(Flatten())
    for dl in dense_layers:
        model.add(Dense(dl, activation='elu'))
        model.add(Dropout(0.5))
    model.add(Dense(1, activation='linear'))
    model.compile(loss='mse', optimizer="adam")
    return model

net = model(load=False, shape=(100, 100, 3))
X = ['/path/to/img/file',...]
y = [[1.2, 4.5],[<num1>,[num2>]]] 
net.fit_generator(_generator(256, X, y), samples_per_epoch=1000, nb_epoch=2)

导致以下错误:

net.fit_generator(_generator(256, X, y), samples_per_epoch=1000, nb_epoch=2)
ValueError: Error when checking target: expected dense_3 to have shape (None, 1) but got array with shape (256, 2)

【问题讨论】:

    标签: tensorflow deep-learning keras keras-layer


    【解决方案1】:

    好像你想做一个二元分类。您标记的数据具有形状 (batch_size, 2)。我猜这总是 0,1 或 1,0 取决于哪个类是正确的。但是您的模型只有一个输出。如果您使用均方数组,您的模型需要与标签中的最后一个维度一样多的输出神经元 => 2。 您现在可以将您的标签数据转换为某种形状 (batch_size, 1)(或者只是 (batch_size) 我不确定),或者您增加输出层中的神经元数量。

    另外,如果我是对的,您想要进行二元分类,请使用二元交叉熵作为损失函数。

    【讨论】:

    • 不,我不是在做二进制分类。输出标签有两个单独的字段,例如。 、
    • 好的,如果你想使用 mse 损失函数,这就是你的标签的外观。另一种方法是编写适合您当前设置的自己的损失函数。
    【解决方案2】:

    如果y[[1.2, 4.5], ...] 的形式,这将起作用(而不是您当前定义的最后一层):

    model.add(Dense(2, activation='linear'))
    

    如果y 的格式为[1.2, 3.4, ...][[1.2], [3.4], ...],您可以使用您拥有的图层:

    model.add(Dense(1, activation='linear'))
    

    【讨论】:

      猜你喜欢
      • 2018-06-16
      • 2020-03-16
      • 2018-05-08
      • 2018-01-24
      • 2021-11-23
      • 2019-09-09
      • 1970-01-01
      • 2018-06-16
      • 2020-10-07
      相关资源
      最近更新 更多