Pylearn2: модель MLP с моими собственными данными
Я пытаюсь построить модель MLP, используя pylearn2. Но в руководстве не так явно указано, как импортировать внешние данные (все учебники используют данные MNSIT).
Итак, мои данные - это файлы CSV:
0 0.129 -0.234 0.394 ...
0 0.293 -0.394 0.234 ...
1 0.192 -0.842 0.123 ...
...
Таким образом, это матрица, первый столбец - это прогнозируемое значение, а другие столбцы - это атрибуты. Я даже не знаю, правильный ли это ввод.
Вот мой файл YAML:
!obj:pylearn2.train.Train {
dataset: &train !obj:pylearn2.datasets.csv_dataset.CSVDataset {
path: 'train.csv',
task: 'regression',
start: 0,
stop: 53607,
expect_headers: False,
num_outputs: 1
},
model: !obj:pylearn2.models.mlp.MLP {
layers : [
!obj:pylearn2.models.mlp.Sigmoid {
layer_name: 'h0',
dim: 10,
irange: .05
},
!obj:pylearn2.models.mlp.Softmax {
layer_name: 'y',
n_classes: 2,
irange: 0.
},
],
nvis: 220,
},
algorithm: !obj:pylearn2.training_algorithms.bgd.BGD {
batch_size: 1024,
conjugate: 1,
updates_per_batch: 10,
monitoring_dataset:
{
'train' : *train,
'valid' : !obj:pylearn2.datasets.csv_dataset.CSVDataset {
path: 'test.csv',
task: 'regression',
start: 0,
stop: 17868,
expect_headers: False,
}
},
termination_criterion: !obj:pylearn2.termination_criteria.And {
criteria: [
!obj:pylearn2.termination_criteria.MonitorBased {
channel_name: "valid_y_misclass"
},
!obj:pylearn2.termination_criteria.EpochCounter {
max_epochs: 10000
}
]
}
},
extensions: [
!obj:pylearn2.train_extensions.best_params.MonitorBasedSaveBest {
channel_name: 'valid_y_missclass',
save_path: "best.pkl"
},
],
}
Итак, есть два класса, но это говорит о том, что задача - это регрессия, если у вас есть матрица, а не вектор.
Вот ошибка вывода, когда я запускаю "train.py training.yaml"
Traceback (most recent call last):
File "train.py", line 261, in <module>
args.verbose_logging, args.debug)
File "train.py", line 206, in train
train_obj = serial.load_train_file(config)
File "/home/romain/Projet/long/pylearn2/pylearn2/utils/serial.py", line 430, in load_train_file
return yaml_parse.load_path(config_file_path, environ=environ)
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 255, in load_path
return load(content, instantiate=instantiate, environ=environ, **kwargs)
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 213, in load
return _instantiate(proxy_graph)
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 156, in _instantiate
return _instantiate_proxy_tuple(proxy, bindings)
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 121, in _instantiate_proxy_tuple
for k, v in six.iteritems(proxy.keywords))
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 121, in <genexpr>
for k, v in six.iteritems(proxy.keywords))
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 156, in _instantiate
return _instantiate_proxy_tuple(proxy, bindings)
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 121, in _instantiate_proxy_tuple
for k, v in six.iteritems(proxy.keywords))
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 121, in <genexpr>
for k, v in six.iteritems(proxy.keywords))
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 161, in _instantiate
for k, v in six.iteritems(proxy))
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 161, in <genexpr>
for k, v in six.iteritems(proxy))
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 156, in _instantiate
return _instantiate_proxy_tuple(proxy, bindings)
File "/home/romain/Projet/long/pylearn2/pylearn2/config/yaml_parse.py", line 122, in _instantiate_proxy_tuple
obj = checked_call(proxy.callable, kwargs)
File "/home/romain/Projet/long/pylearn2/pylearn2/utils/call_check.py", line 99, in checked_call
return to_call(**kwargs)
File "/home/romain/Projet/long/pylearn2/pylearn2/datasets/csv_dataset.py", line 123, in __init__
X, y = self._load_data()
File "/home/romain/Projet/long/pylearn2/pylearn2/datasets/csv_dataset.py", line 149, in _load_data
data = np.loadtxt(self.path, delimiter=self.delimiter)
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 856, in loadtxt
X = np.array(X, dtype)
Я скопировал train.py из "pylearn/pylearn/scripts/train.py", и файлы CSV находятся в самой папке.
Мой файл YAML неправильный? Я действительно не понимаю значение ошибки.