AttributeError: 'Tensor' object has no attribute '_keras_history'

匿名 (未验证) 提交于 2019-12-03 01:27:01

问题:

I looked for all the "'Tensor' object has no attribute ***" but none seems related to Keras (except for TensorFlow: AttributeError: 'Tensor' object has no attribute 'log10' which didn't help)...

I am making a sort of GAN (Generative Adversarial Networks). Here you can find the 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]                     _____________________________________________________________________________ 

I pretrained model_2, and model_3. The thing is I pretrained model_2 with list made of 0 and 1, but model_1 return approached values. So i considered rounding the model1_output, with the following code : the K.round() on 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 [...] 

I have the following error :

AttributeError: 'Tensor' object has no attribute '_keras_history'

Full traceback :

Traceback (most recent call last):   File "C:\Users\Asmaa\Documents\BillyValuation\GFD.py", line 88, in  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' 

I'm using Python 3.6, with Spyder 3.1.4, on Windows 7. I upgraded TensorFlow and Keras with pip last week. Thank you for any help provided !

回答1:

None issue.

but the code is working fine without the line

model1_out = (lambda x: K.round(x), output_shape=...)(model1_out)

and not anything else. Anyway, thank you for trying.

Function round() is not differentiable, hence the gradient is None. I suggest you just remove the line.



回答2:

My problem is use '+' not 'Add' on keras



回答3:

Try this:

def make_gan(GAN_in, model1, model2, model3):     model1_out = model1(GAN_in)     model1_out = Lambda(lambda x: K.round(x), output_shape=...)(model1_out)     model2_out = model2([GAN_in, 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 


回答4:

Since the error comes directly from here:

Traceback (most recent call last):   File "C:\Users\Asmaa\Documents\BillyValuation\GFD.py", line 88, in  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) 

, and the inputs of your models depend on the outputs from previous models, I believe the bug lies in the codes in your model.

In you model code, please check line by line whether or not you apply a non-Keras operation, especially in the last few lines. For example ,for element-wise addition, you might intuitively use + or even numpy.add, but keras.layers.Add() should be used instead.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!