Python Keras和xFF1A;load#U模型值错误:轴don';t匹配数组
我正在用自己的数据集学习gan。我用Python Keras和xFF1A;load#U模型值错误:轴don';t匹配数组,python,keras,deep-learning,Python,Keras,Deep Learning,我正在用自己的数据集学习gan。我用 wgan.generator.save('generator.h5') wgan.critic.save('critic.h5') 装载 model=load\u model('generator.h5') model=load\u model('critic.h5') 但这只在第一次使用时效果良好。当我在第二次训练和跑步后再次保存模型时 model=load\u model('generator.h5') model=load\u model('criti
wgan.generator.save('generator.h5')
wgan.critic.save('critic.h5')
装载
model=load\u model('generator.h5')
model=load\u model('critic.h5')
但这只在第一次使用时效果良好。当我在第二次训练和跑步后再次保存模型时
model=load\u model('generator.h5')
model=load\u model('critic.h5')
再次出现错误:
ValueError回溯(最近一次调用上次)
在()
---->1型号=负载\型号('generator.h5')
D:\keras\engine\saving.py加载\模型(文件路径、自定义\对象、编译)
262
263#设置权重
-->264从hdf5组加载权重(f['model\u weights',model.layers)
265
266如果编译:
D:\keras\engine\saving.py从组hdf5加载权重(f,层,重塑)
914原始版本,
915原始_后端,
-->916重塑=重塑)
917如果len(重量值)!=len(符号权重):
918提升值错误('Layer#')+str(k)+
D:\keras\engine\saving.py在预处理\u权重\u中加载(图层、权重、原始\u keras\u版本、原始\u后端、重塑)
555权重=转换\u嵌套\u时间\u分布(权重)
556 elif层。类名称在['Model','Sequential']中:
-->557权重=转换嵌套模型(权重)
558
559如果原始版本='1':
D:\keras\engine\saving.py在convert\u嵌套\u模型中(权重)
543权重=权重[:num_权重],
544原始版本=原始版本,
-->545原始_后端=原始_后端)
546权重=权重[数量权重:]
547返回新的重量
D:\keras\engine\saving.py在预处理\u权重\u中加载(图层、权重、原始\u keras\u版本、原始\u后端、重塑)
555权重=转换\u嵌套\u时间\u分布(权重)
556 elif层。类名称在['Model','Sequential']中:
-->557权重=转换嵌套模型(权重)
558
559如果原始版本='1':
D:\keras\engine\saving.py在convert\u嵌套\u模型中(权重)
531权重=权重[:num_权重],
532原始版本=原始版本,
-->533原始_后端=原始_后端)
534权重=权重[num_权重:]
535
D:\keras\engine\saving.py在预处理\u权重\u中加载(图层、权重、原始\u keras\u版本、原始\u后端、重塑)
673权重[0]=np.重塑(权重[0],层\权重\形状)
674 elif层\u权重\u形状!=权重[0]。形状:
-->675权重[0]=np.转置(权重[0],(3,2,0,1))
676如果层。类名称==“ConvLSTM2D”:
677权重=np.转置(权重,(3,2,0,1))
转置中的c:\users\administrator\appdata\local\programs\python\35\lib\site packages\numpy\core\fromnumeric.py(a,轴)
596
597 """
-->598返回(a,‘转置’,轴)
599
六百
c:\users\administrator\appdata\local\programs\python35\lib\site packages\numpy\core\fromnumeric.py in_wrapfunc(obj,method,*args,**kwds)
49 def_wrapfunc(obj,方法,*args,**kwds):
50次尝试:
--->51返回getattr(对象,方法)(*args,**kwds)
52
53#如果对象没有
ValueError:轴与阵列不匹配`
我正在使用
Python 3.5.3
Keras 2.2.2
h5py 2.8.0
tensorflow gpu 1.9.0
keras contrib 2.0.8
Keras应用程序1.0.4
Keras预处理1.0.2
任何建议和建议都将不胜感激。尝试将keras版本降级为2.1.5。它为我解决了问题。看起来像中描述的问题: 及 虽然该错误尚未修复,但只有当模型中同时存在可训练权重和不可训练权重时,问题才会发生。如果不需要进一步训练模型,可以通过在保存之前冻结所有权重来解决该问题:
from keras import models
def freeze(model):
"""Freeze model weights in every layer."""
for layer in model.layers:
layer.trainable = False
if isinstance(layer, models.Model):
freeze(layer)
您是否在同一台机器上执行训练和预测?
将tensorflow的版本更改为训练和预测机器的相同版本,解决了我的问题即使降级到2.1.5,我也有相同的错误。我可以加载旧的权重,但不能加载当前训练的权重。运行model.predict()时,我在tf 1.3.0和keras 2.4中得到以下错误保存
tensorflow.python.framework.errors\u impl.failedPremissionError后:从容器:localhost读取资源变量final\u output/bias时出错。这可能意味着该变量未初始化。未找到:容器localhost不存在。(找不到资源:localhost/final\u output/bias)[[{{node final_output/BiasAdd/ReadVariableOp}][[{{{node final_output/Sigmoid}]]
有任何解决方案吗?