Устранение смещения из слоя нейронной сети

Я хочу удалить параметр смещения. Я пытался включить thebias=None где я определяю свою нейронную сеть, но она не работает.

net1 = NeuralNet(
layers=[ # three layers: one hidden layer
('input', layers.InputLayer),
#('hidden', layers.DenseLayer),
('output', layers.DenseLayer),
],
# layer parameters:
input_shape=(None,2), # 2 inputs
#hidden_num_units=200, # number of units in hidden layer
output_nonlinearity=None, # output layer uses identity function
output_num_units=1, # 1 target value

# optimization method:
update=nesterov_momentum,
update_learning_rate=0.01,
update_momentum=0.9,

regression=True,  # flag to indicate we're dealing with regression problem
max_epochs=400,  # we want to train this many epochs
verbose=1,
bias = None
) 

2 ответа

Решение
# Build the network yourself
inputs = InputLayer(shape=(None, 2))
network = DenseLayer(inputs, num_units=1, nonlinearity=None, b = None)

net1 = NeuralNet(
network,
#We don't need any of these parameters since we provided them above
# layer parameters:
#input_shape=(None,2), # 2 inputs
#hidden_num_units=200, # number of units in hidden layer
#output_nonlinearity=None, # output layer uses identity function
#output_num_units=1, # 1 target value

# optimization method:
update=nesterov_momentum,
update_learning_rate=0.01,
update_momentum=0.9,

regression=True,  # flag to indicate we're dealing with regression problem
max_epochs=400,  # we want to train this many epochs
verbose=1,
bias = None
) 

Я думаю, что это должно работать. В сети может передаваться kwarg (я не помню), но я думаю, что по умолчанию это первый параметр, если ничего не указано.

В соответствии с документацией Lasagne для конфорных слоев (она аналогична для плотных слоев), у вас есть следующая опция для уклонов:

b = None 

По крайней мере, в соответствии с документацией Lasagne, для любого из слоев не существует параметра "смещения", вместо этого они используют "b". Я не могу говорить за NoLearn, так как я не использую этот пакет.

Редактировать:

Вот пример кода Lasagne:

import lasagne
net = {}
net['input'] = lasagne.layers.InputLayer(shape=(None, 3, 224,224), input_var=None)
net['conv'] = lasagne.layers.Conv2DLayer(net['input'], num_filters=5, filter_size=3, b = None)
print net['conv'].get_params()

Возвращает:

[W]

один означает, что нет термина смещения.

Для NoLearn я не уверен, так как я не использую этот пакет.

Другие вопросы по тегам