说明
python differencetargetmlp示例是从最受好评的开源项目中提取的实现代码,你可以参考下面示例的使用方式。
编程语言: Python
命名空间/包名称: platotoolsdtpdifference_target_prop
示例#1文件:
old_dtp_experiments.py项目:
qyx268/plato
def make_dtp_net(optimizer_constructor, output_fcn):
return DifferenceTargetMLP.from_initializer(
input_size = dataset.input_size,
output_size = dataset.target_size,
hidden_sizes = hidden_sizes,
optimizer_constructor = optimizer_constructor,
input_activation='sigm',
hidden_activation=hidden_activation,
output_activation=output_fcn,
w_init_mag=0.01,
noise = 1,
).compile()
示例#2文件:
old_dtp_experiments.py项目:
qyx268/plato
def demo_run_dtp_on_mnist(
hidden_sizes = [240],
n_epochs = 20,
n_tests = 20,
minibatch_size=100,
input_activation = 'sigm',
hidden_activation = 'tanh',
output_activation = 'softmax',
optimizer_constructor = lambda: RMSProp(0.001),
normalize_inputs = False,
local_cost_function = mean_squared_error,
output_cost_function = None,
noise = 1,
lin_dtp = False,
seed = 1234
):
dataset = get_mnist_dataset(flat = True).to_onehot()
if normalize_inputs:
dataset = dataset.process_with(targets_processor=multichannel(lambda x: x/np.sum(x, axis = 1, keepdims=True)))
if is_test_mode():
dataset = dataset.shorten(200)
n_epochs = 1
n_tests = 2
predictor = DifferenceTargetMLP.from_initializer(
input_size = dataset.input_size,
output_size = dataset.target_size,
hidden_sizes = hidden_sizes,
optimizer_constructor = optimizer_constructor, # Note that RMSProp/AdaMax way outperform SGD here.
# input_activation=input_activation,
hidden_activation=hidden_activation,
output_activation=output_activation,
w_init_mag=0.01,
output_cost_function=output_cost_function,
noise = noise,
cost_function = local_cost_function,
layer_constructor=DifferenceTargetLayer.from_initializer if not lin_dtp else PreActivationDifferenceTargetLayer.from_initializer,
rng = seed
).compile()
result = assess_online_predictor(
predictor = predictor,
dataset = dataset,
minibatch_size=minibatch_size,
evaluation_function='percent_argmax_correct',
test_epochs = sqrtspace(0, n_epochs, n_tests),
test_callback=lambda p: dbplot(p.symbolic_predictor.layers[0].w.get_value().T.reshape(-1, 28, 28))
)
plot_learning_curves(result)
示例#3文件:
test_difference_target_prop.py项目:
qyx268/plato
def test_difference_target_mlp():
assert_online_predictor_not_broken(
predictor_constructor=lambda n_in, n_out: DifferenceTargetMLP.from_initializer(
input_size=n_in,
output_size=n_out,
hidden_sizes=[50],
optimizer_constructor = lambda: SimpleGradientDescent(0.01),
w_init_mag=0.01,
rng = 1234
).compile(),
minibatch_size=10,
n_epochs=10,
)
示例#4文件:
demo_compare_optimizers.py项目:
qyx268/plato
def backprop_vs_difference_target_prop(
hidden_sizes = [240],
n_epochs = 10,
minibatch_size = 20,
n_tests = 20
):
dataset = get_mnist_dataset(flat = True)
dataset = dataset.process_with(targets_processor=lambda (x, ): (OneHotEncoding(10)(x).astype(int), ))
if is_test_mode():
dataset = dataset.shorten(200)
n_epochs = 0.1
n_tests = 3
set_default_figure_size(12, 9)
return compare_predictors(
dataset=dataset,
online_predictors = {
'backprop-mlp': GradientBasedPredictor(
function = MultiLayerPerceptron.from_init(
layer_sizes=[dataset.input_size]+hidden_sizes+[dataset.n_categories],
hidden_activation='tanh',
output_activation='sig',
w_init = 0.01,
rng = 5
),
cost_function = mean_squared_error,
optimizer = AdaMax(0.01),
).compile(),
'difference-target-prop-mlp': DifferenceTargetMLP.from_initializer(
input_size = dataset.input_size,
output_size = dataset.target_size,
hidden_sizes = hidden_sizes,
optimizer_constructor = lambda: AdaMax(0.01),
w_init=0.01,
noise = 1,
).compile()
},
minibatch_size = minibatch_size,
test_epochs = sqrtspace(0, n_epochs, n_tests),
evaluation_function = percent_argmax_correct,
)
示例#5文件:
demo_difference_target_propagation.py项目:
qyx268/plato
def get_predictor(predictor_type, input_size, target_size, hidden_sizes = [240], output_activation = 'sigm',
hidden_activation = 'tanh', optimizer = 'adamax', learning_rate = 0.01, noise = 1, w_init=0.01, rng = None):
"""
Specify parameters that will allow you to construct a predictor
:param predictor_type: String identifying the predictor class (see below)
:param input_size: Integer size of the input vector. Integer
:param target_size: Integer size of the target vector
:param hidden_sizes:
:param input_activation:
:param hidden_activation:
:param optimizer:
:param learning_rate:
:return:
"""
return {
'MLP': lambda: GradientBasedPredictor(
function = MultiLayerPerceptron.from_init(
layer_sizes = [input_size] + hidden_sizes + [target_size],
hidden_activation=hidden_activation,
output_activation=output_activation,
w_init = w_init,
rng = rng
),
cost_function = mean_squared_error,
optimizer = get_named_optimizer(optimizer, learning_rate),
).compile(),
'DTP': lambda: DifferenceTargetMLP.from_initializer(
input_size = input_size,
output_size = target_size,
hidden_sizes = hidden_sizes,
optimizer_constructor = lambda: get_named_optimizer(optimizer, learning_rate),
# input_activation=input_activation,
hidden_activation=hidden_activation,
output_activation=output_activation,
w_init_mag=w_init,
noise = noise,
rng = rng,
).compile(),
'PreAct-DTP': lambda: DifferenceTargetMLP.from_initializer(
input_size = input_size,
output_size = target_size,
hidden_sizes = hidden_sizes,
optimizer_constructor = lambda: get_named_optimizer(optimizer, learning_rate),
# input_activation=input_activation,
hidden_activation=hidden_activation,
output_activation=output_activation,
w_init_mag=w_init,
noise = noise,
layer_constructor = PreActivationDifferenceTargetLayer.from_initializer,
rng = rng,
).compile(),
'Linear-DTP': lambda: LinearDifferenceTargetMLP.from_initializer(
input_size = input_size,
output_size = target_size,
hidden_sizes = hidden_sizes,
optimizer_constructor = lambda: get_named_optimizer(optimizer, learning_rate),
# input_activation=input_activation,
hidden_activation=hidden_activation,
output_activation='linear',
w_init_mag=w_init,
noise = noise,
rng = rng,
# layer_constructor = LinearDifferenceTargetLayer.from_initializer
).compile(),
}[predictor_type]()