如何将一维卷积层表示为一个操作?例如,完全连接的层如下:

model = Sequential([

    Dense(32, batch_input_shape=(None,100), init='he_normal', activation='relu),

    Dense(1, init='he_normal', activation='linear)
])

可以写成这样的函数:

def pred(inputs,model_weights):

    weights=np.vstack([model_weights[0],model_weights()[1]]) 

    inputs=np.hstack([inputs,np.zeros(inputs.shape[0]).reshape(inputs.shape[0],1)])

    inputs[:,-1]=1

    prediction=np.dot(inputs,weights) 

    prediction[prediction<0]=0              ### RELU after 1st layer

    weights=np.vstack([model_weights[2],model_weights[3]])

    prediction=np.hstack([prediction,np.zeros(prediction.shape[0]).reshape(prediction.shape[0],1)])

    prediction[:,-1]=1

    prediction=np.dot(prediction,weights)

    return prediction


weights_from_model = model.get_weights()

x=test_data

pred(x,weights_from_model)

首先,我是否正确理解了密集层?

其次,你如何表示CNN层,如下面的代码中那样?

model = Sequential([

    InputLayer(batch_input_shape=(None,100,1)),

    Convolution1D(nb_filter=16, filter_length=8, activation='relu', border_mode='same', init='he_normal', input_shape=(None,100,1)),

    Convolution1D(nb_filter=32, filter_length=8, activation='relu', border_mode='same', init='he_normal'), 

    MaxPooling1D(pool_length=4),

    Flatten(),

    Dense(output_dim=32, activation='relu', init='he_normal'),

    Dense(output_dim=1, input_dim=32, activation='linear'),
])

创建此函数对于我的项目是必要的,以便定义Theano函数(尽管我已经使用Tensorflow来训练权重),该函数返回输出数据的输出的雅可比矩阵 . 权重已经训练和设置,只需将图层放在python函数的形式 .

***编辑

如何将偏置权重添加到CNN层?

例如,我的第一层有尺寸:(8,1,1,16)

尺寸偏差:(16,)

这很容易连接在一起得到尺寸:(9,1,1,16)

但对于下一层我有尺寸:(8,1,16,32)

偏向尺寸:(32,)

如何将其组合成一个权重矩阵?