Тензорный объект не имеет атрибута lower - PullRequest
0 голосов
/ 05 ноября 2018

Я хорошо настраиваю MobileNet с 14 новыми классами. Когда я добавляю новые слои по:

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

Я получаю ошибку:

'Tensor' object has no attribute 'lower'

Также используется:

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)

Я получаю ошибку:

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

Что означает lower? Я видел другие сценарии тонкой настройки, и не было никаких других аргументов, кроме названия модели, в данном случае X.

1 Ответ

0 голосов
/ 05 ноября 2018

Тензор должен быть передан слою при вызове, а не в качестве аргумента. Поэтому должно быть так:

x = Flatten()(x)  # first the layer is constructed and then it is called on x

Чтобы было понятнее, это эквивалентно следующему:

flatten_layer = Flatten()  # instantiate the layer
x = flatten_layer(x)       # call it on the given tensor
...