如何解决创建执行scikit学习分类器的Keras图层
我正在尝试在keras模型中集成“黑匣子” sklearn分类器(这次是GradientBoostingClassifier,但我想使其尽可能通用)。
输入内容应由keras模型处理,最后一层是执行分类器的定制keras层。
我走了这么远:
class SKLearnLayer(Layer):
classifier = None
def __init__(self,output_dim,classifier,**kwargs):
self.output_dim = output_dim
super().__init__(**kwargs)
self.trainable = False
self.classifier = classifier
def build(self,input_shape):
self.built = True
def call(self,x):
#Eager execution must be enabled
inp = x.numpy()
out = self.classifier.predict(inp)
return tf.convert_to_tensor(out)
def compute_output_shape(self,input_shape):
return (input_shape[0],self.output_dim)
我以这种方式实例化该层:
output_c = self.SKLearnLayer(1,classifier = self.classifier)(output_b)
(其中output_b是正常的Keras层)。
但是我遇到了一些奇怪的错误,例如
AttributeError:“ Tensor”对象没有属性“ numpy”
(启用紧急执行)。
有人对我做错的事有任何想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。