AttributeError: 'Tenseur de l'objet n'a pas d'attribut "_keras_history'

J'ai regardé pour toutes les "Tenseur" objet n'a pas d'attribut ***", mais aucune ne semble liée à Keras (sauf pour TensorFlow: AttributeError: 'Tenseur de l'objet n'a pas d'attribut "log10' qui n'aide pas)...

Je fais une sorte de GAN (Générative Contradictoire Réseaux). Ici vous pouvez trouver la structure.

Layer (type)                     Output Shape          Param #         Connected to                     
_____________________________________________________________________________
input_1 (InputLayer)             (None, 30, 91)        0                                            
_____________________________________________________________________________
model_1 (Model)                  (None, 30, 1)         12558           input_1[0][0]                    
_____________________________________________________________________________
model_2 (Model)                  (None, 30, 91)        99889           input_1[0][0]                    
                                                                       model_1[1][0]                    
_____________________________________________________________________________
model_3 (Model)                  (None, 1)             456637          model_2[1][0]                    
_____________________________________________________________________________

Je pré-entraîné model_2, et model_3. Le truc c'est que je pré-entraîné model_2 avec liste de 0 et de 1, mais model_1 retour approché valeurs. J'ai donc considéré comme l'arrondissement le model1_output, avec le code suivant : le K. round() sur model1_out.

import keras.backend as K
[...]
def make_gan(GAN_in, model1, model2, model3):
    model1_out = model1(GAN_in)
    model2_out = model2([GAN_in, K.round(model1_out)])
    GAN_out = model3(model2_out)
    GAN = Model(GAN_in, GAN_out)
    GAN.compile(loss=loss, optimizer=model1.optimizer, metrics=['binary_accuracy'])
    return GAN
[...]

J'ai l'erreur suivante :

AttributeError: 'Tenseur de l'objet n'a pas d'attribut "_keras_history'

Plein de sperme :

Traceback (most recent call last):
  File "C:\Users\Asmaa\Documents\BillyValuation\GFD.py", line 88, in <module>
GAN = make_gan(inputSentence, G, F, D)
  File "C:\Users\Asmaa\Documents\BillyValuation\GFD.py", line 61, in make_gan
GAN = Model(GAN_in, GAN_out)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\legacy\interfaces.py", line 88, in wrapper
return func(*args, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 1705, in __init__
build_map_of_graph(x, finished_nodes, nodes_in_progress)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 1695, in build_map_of_graph
layer, node_index, tensor_index)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 1695, in build_map_of_graph
layer, node_index, tensor_index)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 1665, in build_map_of_graph
layer, node_index, tensor_index = tensor._keras_history
AttributeError: 'Tensor' object has no attribute '_keras_history'

Je suis à l'aide de Python 3.6, avec Spyder 3.1.4, sur Windows 7. J'ai mis à jour TensorFlow et Keras avec pip, la semaine dernière.
Merci pour toute aide !

Essayez de mettre K.round à l'intérieur d'un Lambda couche. Il n'est pas habitué à voir des opérations à l'extérieur des couches dans keras. (Pas sûr que c'est le problème, tout de même).
avec rounded = Lambda(lambda x: K.round(x))(G_out) et F_out = F([GAN_in, rounded]), je pourrais "compiler", mais pas plus.
Alors, quelle est la nouvelle erreur? (Lambda couches normalement besoin d'un output_shape. Dans votre cas, de la même forme de x)
Gardez à l'esprit que TensorFlow prend uniquement en charge la version 3.5.x de Python sur Windows: tensorflow.org/install/install_windows
J'ai dit que parce que l'opérateur + ne fonctionne pas correctement et vous devez utiliser la méthode add de keras de l'insead

OriginalL'auteur Maëva LC | 2017-07-03