如何将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)
如何将其组合成一个权重矩阵?