Python 变分自动编码器(keras)中的新缺陷

Python 变分自动编码器(keras)中的新缺陷,python,tensorflow,autoencoder,Python,Tensorflow,Autoencoder,我曾经使用此代码来训练可变自动编码器(我在论坛上找到了该代码,并根据我的需要进行了修改): 它以前工作很顺利,但我已经更新了我的库,现在我遇到了以下错误: 文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\ops.py”, 第1619行,在创建操作中 c_op=c_api.TF_FinishOperation(操作说明) I

我曾经使用此代码来训练可变自动编码器(我在论坛上找到了该代码,并根据我的需要进行了修改):

它以前工作很顺利,但我已经更新了我的库,现在我遇到了以下错误:

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\ops.py”, 第1619行,在创建操作中 c_op=c_api.TF_FinishOperation(操作说明)

InvalidArgumentError:图中的节点名称重复: “lambda_1/随机_法线/形状”

在处理上述异常期间,发生了另一个异常:

回溯(最近一次呼叫最后一次):

文件 “I:\Documents\Nico\Python\finance\travail\u amont\autoencoder\u variationnel\u bruit.py”, 第74行,在 z=层。Lambda(采样)([z_平均值,z_对数值])

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\keras\backend\tensorflow\u backend.py”, 第75行,符号包装 返回函数(*args,**kwargs)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\keras\engine\base\u layer.py”, 第506行,在呼叫中 输出形状=自我。计算输出形状(输入形状)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\keras\layers\core.py”, 第674行,计算输出形状 x=自调用(xs)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\keras\layers\core.py”, 第716行,待命 返回self.function(输入,**参数)

文件 “I:\Documents\Nico\Python\finance\travail\u amont\autoencoder\u variationnel\u bruit.py”, 第71行,在采样中 平均值=0,标准差=1。)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\keras\backend\tensorflow\u backend.py”, 第4329行,随机_正常 形状,平均值=平均值,标准差=标准差,数据类型=数据类型,种子=种子)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\keras\backend.py”, 第5602行,随机_正常 形状,平均值=平均值,标准差=标准差,数据类型=数据类型,种子=种子)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\ops\random\u ops.py”, 第69行,随机_正常 形状张量=张量。形状张量(形状)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\tensor\u util.py”, 第994行,形状为_张量 返回操作。将\u转换为\u张量(shape,dtype=dtype,name=“shape”)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\ops.py”, 第1314行,转换为张量 ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\ops\array\u ops.py”, 第1368行,输入自动打包转换函数 返回自动打包帮助程序(v、数据类型、名称或“打包”)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\ops\array\u ops.py”, 第1304行,输入自动打包辅助程序 返回gen_数组操作包(元素作为张量,名称=范围)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\ops\gen\u array\u ops.py”, 5704行,打包 “包”,值=值,轴=轴,名称=名称)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\op\u def\u library.py”, 第742行,输入应用操作辅助程序 attrs=attr_protos,op_def=op_def)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\func\u graph.py”, 第595行,在“创建”和“操作”内部 计算机(U设备)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\ops.py”, 第3322行,在“创建”和“操作”内部 op_def=op_def)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\ops.py”, 第1786行,在init 控制(输入操作)

文件 “C:\Users\user\AppData\Local\conda\conda\envs\my\u root\lib\site packages\tensorflow\u core\python\framework\ops.py”, 第1622行,在创建操作中 提升值错误(str(e))

ValueError:图中的节点名称重复: “lambda_1/随机_法线/形状”


我不知道这个错误:“图中的节点名称重复”。有人有线索吗?谢谢。

如果您使用的是
tf2.x
,请按如下方式导入
keras
模块

from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.kerasimport backend as K
from tensorflow.keras.models import Model

与此更相关的是,

感谢您的回答,它确实解决了问题的一部分,但随后我遇到了一个“类型错误:函数构建代码之外的op被传递了一个“图形”张量。”。我的脚本在TF1.14上还可以,但在TF2.1上似乎已经不起作用了。错误出现在“fit”步骤。好的,即使我没有完全理解它,我也有答案:它可以正常工作,只需要更改该行的导入:从tensorflow.keras导入后端为K,其余的应该像以前一样保留。
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.kerasimport backend as K
from tensorflow.keras.models import Model