Keras CNN层作为一种功能

时间:2017-03-15 23:34:41

标签: python tensorflow neural-network keras convolution

如何将1D-Convolutional Layer表示为操作? 例如,像这样的完全连接的层:

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函数中即可。

*** EDIT

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

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

偏向尺寸: (16)

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

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

偏见尺寸: (32)

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

0 个答案:

没有答案