Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 创建自定义激活时出错,该激活使用keras减小通道大小_Tensorflow_Keras_Keras Layer_Keras 2 - Fatal编程技术网

Tensorflow 创建自定义激活时出错,该激活使用keras减小通道大小

Tensorflow 创建自定义激活时出错,该激活使用keras减小通道大小,tensorflow,keras,keras-layer,keras-2,Tensorflow,Keras,Keras Layer,Keras 2,我用keras创建了一个自定义激活函数,它将通道大小减少了一半(最大功能映射激活) 下面是代码的一部分: import tensorflow as tf import keras from keras.utils.generic_utils import get_custom_objects from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten from keras.layers

我用keras创建了一个自定义激活函数,它将通道大小减少了一半(最大功能映射激活)

下面是代码的一部分:

import tensorflow as tf
import keras
from keras.utils.generic_utils import get_custom_objects
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D, Activation

def MyMFM (x):
    Leng = int(x.shape[-1])
    ind1=int(Leng/2)   
    X1=x[:,:,:,0:ind1]
    X2=x[:,:,:,ind1:Leng]
    MfmOut=tf.maximum(X1,X2)
    return MfmOut

get_custom_objects().update({'MyMFM ': Activation(MyMFM)})

model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5),strides=(1, 1), padding = 'same',input_shape = (513,211,1)))
model.add(Activation(MyMFM))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(48, kernel_size=(1, 1),strides=(1,  1 ), padding = 'same'))
编译此代码时,出现以下错误:

 number of input channels does not match corresponding dimension of filter, 16 != 32 
此错误来自最后一行代码。激活后,通道长度从32缩短到16。但下一层会自动将通道长度视为32(第一层中的滤波器数量)而不是16。我尝试在第二个卷积层中添加input_shape参数,以将输入形状定义为(513211,16)。但这也给了我同样的错误。激活后,我应该如何将张量的形状传递到下一层

谢谢

因此-根据文档,您可能会看到
keras
引擎会自动将层的输出形状设置为与其输入形状相同


改用图层。

为什么要使用
激活
。我会尝试
Lambda
,因为
Activation
可能无法更改输出的形状。很抱歉@MarcinMożejko,我删除了我的答案。