Tensor'对象没有属性'lower'

Shi*_*ier 6 python conv-neural-network keras tensorflow keras-layer

我正在用14个新类对MobileNet进行微调。当我通过以下方式添加新图层时:

x=mobile.layers[-6].output
x=Flatten(x)
predictions = Dense(14, activation='softmax')(x)
model = Model(inputs=mobile.input, outputs=predictions)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

'Tensor' object has no attribute 'lower'
Run Code Online (Sandbox Code Playgroud)

还使用:

model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(train_batches, steps_per_epoch=18,
                validation_data=valid_batches, validation_steps=3, epochs=60, verbose=2)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

Error when checking target: expected dense_1 to have 4 dimensions, but got array with shape (10, 14)
Run Code Online (Sandbox Code Playgroud)

什么lower意思 我看到了其他微调脚本,除了模型名称(在这种情况下为X)之外,没有其他参数。

tod*_*day 12

张量必须在调用时传递给图层,而不是作为参数传递。因此,它必须是这样的:

x = Flatten()(x)  # first the layer is constructed and then it is called on x
Run Code Online (Sandbox Code Playgroud)

更清楚地说,它等效于此:

flatten_layer = Flatten()  # instantiate the layer
x = flatten_layer(x)       # call it on the given tensor
Run Code Online (Sandbox Code Playgroud)