Использование алгоритма оптимизации pybrain для решения поисковых задач

Недавно я начал использовать библиотеку pybrain для задач классификации с использованием нейронных сетей, и с некоторой борьбой и документацией я заставил это работать.

Теперь я хотел бы использовать алгоритмы оптимизации черного ящика из той же библиотеки, но не относящиеся к классификации.

По сути, я пытаюсь воспроизвести некоторые результаты из блога Рэнди http://www.randalolson.com/2015/02/03/heres-waldo-computing-the-optimal-search-strategy-for-finding-waldo/.

Итак, в качестве первого шага я создал контролируемый набор данных со следующим фрагментом:

ds = SupervisedDataSet(2, 2)
for row in range(len(waldo_df)):
    ds.addSample(inp=waldo_df.iloc[row][['Book', 'Page']], target=waldo_df.iloc[row][['X', 'Y']])
return ds

Теперь один образец из набора данных выглядит так:

ds.getSample()
[array([ 5.,  8.]), array([ 3.51388889,  4.31944444])]

На следующем шаге я хотел бы использовать алгоритм HillClimber, чтобы найти оптимальный путь:

ef = ds.evaluateModuleMSE
init_value = ds.getSample()
learner = HillClimber(evaluator=ef, initEvaluable=init_value, minimize=True)
learner.learn()

Что я получу в исключение:

/Users/maestro/anaconda/lib/python2.7/site-packages/pybrain/datasets/supervised.pyc in evaluateModuleMSE(self, module, averageOver, **args)
 96         res = 0.
 97         for dummy in range(averageOver):
 ---> 98             module.reset()
 99             res += self.evaluateMSE(module.activate, **args)
100         return res/averageOver

AttributeError: 'numpy.ndarray' object has no attribute 'reset'

Может ли кто-нибудь помочь мне понять, что я делаю не так? Документация по этому вопросу очень скудная, и даже поиск по базе кода не помог.

Спасибо

PS Если я правильно читаю API

class pybrain.optimization.HillClimber(evaluator=None, initEvaluable=None, **kwargs)

Самый простой вид стохастического поиска: восхождение на гору в фитнес-ландшафте.

алгоритм оптимизации должен принимать только оценщик, который в моем случае был бы ds.evaluateModuleMSE

Обновить

Весь фрагмент кода:

 import pandas as pd
 from pybrain.optimization import HillClimber
 from pybrain.datasets import SupervisedDataSet
 waldo_df = pd.read_csv('whereis-waldo-locations.csv')
 ds = SupervisedDataSet(2, 2)
 for row in range(len(waldo_df)):
   ds.addSample(inp=waldo_df.iloc[row][['Book', 'Page']],     target=waldo_df.iloc[row][['X', 'Y']])
 learner = HillClimber(evaluator=ds.evaluateModuleMSE,    initEvaluable=ds.getSample(), minimize=True)

0 ответов

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