Python Keras和xFF1A;load#U模型值错误:轴don';t匹配数组

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

我正在用自己的数据集学习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('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}]]
有任何解决方案吗?