如何将一维卷积层表示为一个操作?例如,完全连接的层如下:
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,)
如何将其组合成一个权重矩阵?