我想将一个Lasagne模型规格转换为Keras。Lasagne中的以下层在Keras中对应的层是什么:
nn = Conv3DDNNLayer(nn, 8, 3) # Lasagne层
Keras中Convolution3D层的规格是:
keras.layers.convolutional.Convolution3D(nb_filter, kernel_dim1, kernel_dim2, kernel_dim3, init='glorot_uniform', activation=None, weights=None, border_mode='valid', subsample=(1, 1, 1), dim_ordering='default', W_regularizer=None, b_regularizer=None, activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True)
而在Lasagne中是:
class lasagne.layers.dnn.Conv3DDNNLayer(incoming, num_filters, filter_size, stride=(1, 1, 1), pad=0, untie_biases=False, W=lasagne.init.GlorotUniform(), b=lasagne.init.Constant(0.), nonlinearity=lasagne.nonlinearities.rectify, flip_filters=False, **kwargs)
所以,在上面的例子中,Lasagne层有’nn’作为输入,8个过滤器,过滤器大小为3。
然而,Keras要求指定每个kernel_dim。它们都是3吗?
谢谢。
回答:
正如你可以在这里阅读这里:
filter_size : int或int的可迭代对象
一个整数或一个包含三个元素的元组,指定过滤器的大小。
nn = Conv3DDNNLayer(nn, 8, 3)
等同于:
model.add(Convolution3D(8, 3, 3, 3, ...)
或者
conv_3d_output = Convolution3D(8, 3, 3, 3, ...)(conv_3d_input)
这取决于你使用的是哪个Keras.API
。