Keras SAE tenorflow error Shapes должны быть одинакового ранга, но имеют 3 и 1 для 'Assign_6' (op: 'Assign') с входными формами: [3,32,8], [32] - PullRequest
0 голосов
/ 05 апреля 2020

В последней строке кода ниже есть ошибка

ValueError: Shapes must be equal rank, but are 3 and 1 for 'Assign_6' (op: 'Assign') with input shapes: [3,32,8], [32].

Я не могу решить проблему, пожалуйста, дайте мне несколько советов, спасибо!

from architecturesl import sae_encoded,sae_decoded,saeclassifier

# ms = dnn.Input(shape=(n_dim[1],))
ms = dnn.Input(shape=(n_dim[1], n_dim[2]))
fes = sae_encoded(ms)
net = sae_decoded(fes)
autoencoder_model = dnn.Model(inputs=ms, outputs=net)

optim = dnn.keras.optimizers.Adam()  # ,beta_1=0.999, beta_2=0.999)
metrics = ['acc', 'mae']
loss = 'mse'
autoencoder_model.compile(optimizer=optim, loss=loss, metrics=metrics)
autoencoder_model.fit(source_traindata, source_traindata, batch_size=128)

nete = saeclassifier(fes)
autoclassifier_model= dnn.Model(inputs=ms, outputs=nete)

autoclassifier_model.compile(optimizer=optim, loss=loss, metrics=metrics)
autoclassifier_model.fit(source_traindata, source_trainlabel_cat, batch_size=128, epochs=epochs,
                         validation_data=(source_validdata, source_validlabel_cat))

smodel_train_acc = autoclassifier_model.evaluate(source_traindata, source_trainlabel_cat)

# %% target model
main_input = dnn.Input(shape=(n_dim[1],n_dim[2]))
fe = sae_encoded(main_input)
fe_size = fe.get_shape().as_list()[1]
sae_encoded_model = dnn.Model(main_input, fe, name='sae_encoded_model')

cl_input = dnn.Input(shape=(fe.get_shape().as_list()[1],fe.get_shape().as_list()[2]))

classifier = saeclassifier(cl_input)
classifier_model = dnn.Model(cl_input, classifier, name='classifier_model')

# %% aljdot model
main_input = dnn.Input(shape=(n_dim[1],n_dim[2]))
ffe = sae_encoded_model(main_input)
cnet = classifier_model(ffe)
model = dnn.Model(inputs=main_input, outputs=[cnet, ffe])

optim = dnn.keras.optimizers.Adam(lr=0.0001)  # ,beta_1=0.999, beta_2=0.999)
a = autoclassifier_model.get_weights()
model.set_weights(autoclassifier_model.get_weights())
...