我找了所有"' Tensor'对象没有属性***"但似乎没有一个与Keras相关(除了TensorFlow: AttributeError: 'Tensor' object has no attribute 'log10'没有帮助)...
我正在制作一种GAN(Generative Adversarial Networks)。在这里你可以找到结构。
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]
_____________________________________________________________________________
我预先训练了model_2和model_3。事情是我预先训练了model_2,列表由0和1组成,但是model_1返回了接近的值。所以我考虑使用以下代码舍入model1_output:model1_out上的K.round()。
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
[...]
我有以下错误:
属性错误:' Tensor'对象没有属性' _keras_history'
完整追溯:
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'
我在Windows 7上使用Python 3.6和Spyder 3.1.4。我上周用pip升级了TensorFlow和Keras。 感谢您提供的任何帮助!
答案 0 :(得分:11)
我的问题是在keras上使用'+'而非'添加'
答案 1 :(得分:10)
由于错误直接来自此处:
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)
,模型的输入取决于之前模型的输出,我相信错误在于模型中的代码。
在您的型号代码中,请逐行检查是否应用非Keras操作,尤其是在最后几行中。例如,对于按元素添加,您可以直观地使用+
甚至numpy.add
,但应使用keras.layers.Add()
代替。
答案 2 :(得分:4)
@'MaëvaLC':我无法发表评论,这可以解答您的None
问题。
但代码在没有行
的情况下工作正常
model1_out = (lambda x: K.round(x), output_shape=...)(model1_out)
而不是其他任何东西。无论如何,谢谢你的尝试。
函数round()
不可微分,因此渐变为None。我建议你删除该行。
答案 3 :(得分:1)
试试这个:
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 :(得分:0)
tensorflow 1.x 版本支持 您可能使用的是 2.x 版。
%tensorflow_version 1.x
在 google colab 中导入 tensorflow 之前使用上面的 tensorflow_version 魔法。
这在 jupyter-notebook 中无效。请务必使用 Google Colab