keras自定义层多输出实现
在keras的自定义层中实现多输出的注意事项
1. 自定义层的call方法:
如果两个输出x,y,其中x是tensor,y是list(y的项都是Tensor),不要输出return x,y
而是要把他们组成list,其中每个list的成员都必须是tensor,即return [x]+y。
注意:return [x.y]是错误的,本质上这个和return x,y没区别。一个return的是tuple(每个tuple的成员不全是Tensor),一个return的是list(每个list的成员不全是Tensor)
2.自定义层的compute_output_shape方法:
同时要修改该方法,对于上面所述的return [x]+y的修改可以改为
return [self.x.shape] + [yItem.shape for yItem in self.y]
注意在call方法中添加self.x=x和self.y=y