ValueError:函数的输入张量必须来自“tf.keras.Input”。接收到:0(缺少上一层元数据)。我如何解决这个问题?

ValueError:函数的输入张量必须来自“tf.keras.Input”。接收到:0(缺少上一层元数据)。我如何解决这个问题?,keras,tensorflow2.0,tf.keras,Keras,Tensorflow2.0,Tf.keras,当我试图获取利用SVM进行分类的特征时,会出现以下错误。详细情况如下所述 模型:“顺序” 图层(类型)输出形状参数# conv2d(conv2d)(无、32、32、64)1792 激活(激活)(无、32、32、64)0 conv2d_1(conv2d)(无、32、32、64)36928 激活1(激活)(无、32、32、64)0 最大池2D(最大池2D)(无、16、16、64)0 辍学(辍学)(无、16、16、64)0 conv2d_2(conv2d)(无、16、16、128)738

当我试图获取利用SVM进行分类的特征时,会出现以下错误。详细情况如下所述

模型:“顺序”


图层(类型)输出形状参数# conv2d(conv2d)(无、32、32、64)1792


激活(激活)(无、32、32、64)0


conv2d_1(conv2d)(无、32、32、64)36928


激活1(激活)(无、32、32、64)0


最大池2D(最大池2D)(无、16、16、64)0


辍学(辍学)(无、16、16、64)0


conv2d_2(conv2d)(无、16、16、128)73856


激活_2(激活)(无、16、16、128)0


conv2d_3(conv2d)(无、16、16、128)147584


激活_3(激活)(无、16、16、128)0


最大池2D池1(最大池2(无、8、8、128)0


辍学1(辍学)(无、8、8、128)0


conv2d_4(conv2d)(无、8、8、256)295168


激活4(激活)(无、8、8、256)0


conv2d_5(conv2d)(无、8、8、256)590080


激活_5(激活)(无、8、8、256)0


conv2d_6(conv2d)(无、8、8、256)590080


激活_6(激活)(无、8、8、256)0


最大池2D_2(最大池2(无、4、4、256)0


辍学2(辍学)(无、4、4、256)0


展平(展平)(无,4096)0


稠密的(稠密的)(无,1024)4195328


激活_7(激活)(无,1024)0


辍学3(辍学)(无,1024)0


密集型_1(密集型)(无,1024)1049600


激活_8(激活)(无,1024)0


辍学4(辍学)(无,1024)0


密集型_2(密集型)(无,10)10250


激活_9(激活)(无,10)0 总参数:6990666 可培训参数:6990666 不可训练参数:0

之后,我检查图层定义 我试图得到特征提取层
ValueError回溯(最近一次调用上次) 在() 1#特征提取层 2 getFeature=K.function([model.layers[0]。输入,K.learning_phase(), ---->3[模型.层[26].输出])

6帧 /函数中的usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py(输入、输出、更新、名称,**kwargs) 3934来自tensorflow.python.keras导入模型#pylint:disable=g-import-not-at-top 3935从tensorflow.python.keras.utils导入tf_utils#pylint:disable=g-import-not-at-top ->3936模型=模型。模型(输入=输入,输出=输出) 3937 3938 wrap_输出=isinstance(输出,列表)和len(输出)=1

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py innew(cls,*args,**kwargs) 240#功能模型 241来自tensorflow.python.keras.engine import functional#pylint:disable=g-import-not-at-top -->242返回functional.functional(*args,**kwargs) 243其他: 244返回超级(型号,cls)。新的(cls,*args,**kwargs)

/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/base.py in_method_wrapper(self,*args,**kwargs) 455 self._self_setattr_tracking=False#pylint:disable=protected access 456试试: -->457结果=方法(自身、*args、**kwargs) 458最后: 459 self._self_setattr_tracking=上一个值#pylint:disable=受保护访问

/init中的usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/functional.py(self、输入、输出、名称、可培训) 113#'初始化期间的参数。获取意外参数:') 114超级(功能,自我)。init(名称=名称,可培训=可培训) -->115自初始化图网络(输入、输出) 116 117@trackable.no\自动\依赖\跟踪

/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/base.py in_method_wrapper(self,*args,**kwargs) 455 self._self_setattr_tracking=False#pylint:disable=protected access 456试试: -->457结果=方法(自身、*args、**kwargs) 458最后: 459 self._self_setattr_tracking=上一个值#pylint:disable=受保护访问

/网络中的usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/functional.py(自、输入、输出) 142基础层实用程序。创建历史记录(自嵌套输出) 143 -->144自我验证图输入和输出() 145 146#一个网络本身并不会产生权重,因此它已经存在

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/functional.py in_-validate_-graph_-input_和_-output(self) 637'必须来自
tf.keras.Input
' 638'收到:'+str(x)+ -->639'(缺少上一层元数据)。” 640#检查x是否为输入张量。 641#pylint:disable=受保护访问

ValueError:函数的输入张量必须来自
tf.keras.Input
。接收到:0(缺少上一层元数据)

我的tensorflow版本分别是2.3.0和keras版本是2.4.3。

请包括fu
from keras import backend as K
for l in range(len(model.layers)):
    print(l, model.layers[l])
getFeature = K.function([model.layers[0].input, K.learning_phase()],
                        [model.layers[26].output])