Je suis en train de régler un MobileNet avec 14 nouvelles classes. Lorsque j'ajoute de nouveaux calques en:
x=mobile.layers[-6].output
x=Flatten(x)
predictions = Dense(14, activation='softmax')(x)
model = Model(inputs=mobile.input, outputs=predictions)
Je reçois l'erreur:
'Tensor' object has no attribute 'lower'
Utilisant également:
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)
Je reçois l'erreur:
Error when checking target: expected dense_1 to have 4 dimensions, but got array with shape (10, 14)
Que signifie lower
? J'ai vu d'autres scripts de réglage fin et il n'y avait pas d'autres arguments que le nom du modèle qui est X dans ce cas.
Le tenseur doit être transmis au calque lorsque vous l'appelez, et non comme argument. Par conséquent, cela doit être comme ceci:
x = Flatten()(x) # first the layer is constructed and then it is called on x
Pour être plus clair, cela équivaut à ceci:
flatten_layer = Flatten() # instantiate the layer
x = flatten_layer(x) # call it on the given tensor