ValueError:函数的输入张量必须来自“tf.keras.Input”。接收到:0(缺少上一层元数据)。我如何解决这个问题?
当我试图获取利用SVM进行分类的特征时,会出现以下错误。详细情况如下所述 模型:“顺序”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
图层(类型)输出形状参数# 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])