Неизвестный дополнительный позиционный аргумент для функции, передаваемой в scipy.optimize.minimze - PullRequest
0 голосов
/ 14 февраля 2019

Я должен сделать сценарий, который создает модель для обнаружения двух стимулов, A и B, с параметрами значения стимулов A и B (на самом деле, значение, обозначающее предсказание появления A и B), обучениескорость для обоих стимулов, количество испытаний для имитации.

Но я застрял с scipy.optimize.minimize.Я думаю, что самое важное здесь, независимо от описания этой модели / моделирования, заключается в том, что сообщение об ошибке, которое я получаю, просто говорит о том, что функция, которую я пытаюсь передать в минимизацию, имеет слишком много позиционных аргументов.Я получаю

TypeError: rw_simulation() takes 5 positional arguments but 6 were given

Кортеж, который я передаю в параметр args для scipy.optimize.minimize, явно состоит из 5 элементов.Скорости обучения должны быть плавающими, значения v_stimulus также должны быть плавающими ... trial_total должен быть int.Что-то здесь не так в том, как я пытаюсь использовать минимизацию, но это сообщение об ошибке, утверждающее, что есть 6 позиционных аргументов, на самом деле не помогает мне понять, что я могу исправить.

def rw_simulation(v_stimulusA, v_stimulusB, learning_rateA, learning_rateB, trial_total): 
   # this code for the most part isn't important

    reinforcement_val = 100
    stimA_predict_vals = []
    stimB_predict_vals = []
    stimA_predict_vals.append(v_stimulusA)
    stimB_predict_vals.append(v_stimulusB)

    for trial in range(trial_count):
        # unimportant computation
        v_stimulusA += learning_rateA*(reinforcement_val - delta_diff)
        v_stimulusB += learning_rateB*(reinforcement_val - delta_diff)
        stimA_predict_vals.append(v_stimulusA) # stores the change in value for stimA at the end of each trial.
        stimB_predict_vals.append(v_stimulusB) # also stores the change in value for stimB at the end of each trial
    return stimA_predict_vals, stimB_predict_vals

trial_count = 200
start_predictA = 0
start_predictB = 0
learning_rateA = 0.3
learning_rateB = 0.3
hw1_data = np.load("hw1_data.npy") # np array containing initial guesses, though it is possible that this var is causing problems. However, the error message at hand clearly isn't related to this.
stimulus_prediction_vals_tuple = ()
stimulus_prediction_vals_tuple = rw_simulation(start_predictA, start_predictB, learning_rateA, learning_rateB, trial_count)

minimize(rw_simulation, hw1_data, args=(start_predictA, start_predictB, learning_rateA, learning_rateB, trial_count,), method='nelder-mead')

Я просто хочупо крайней мере, покажите это сообщение об ошибке, касающееся дополнительных позиционных аргументов.На самом деле у меня есть некоторые опасения, что аргумент "hw1_data", который я использую для параметра x0 в scipy.optimize.minimize, может быть не той переменной, которую я должен использовать.Но если это было причиной этого сообщения об ошибке ... Это, очевидно, не очевидно вообще.Плюс я оставлю это для другого вопроса.

Действительно, как я передаю 6 позиционных аргументов?Откуда идет шестой?

Редактировать: в какой-то момент, когда я вынул параметр args или установил кортеж на () / empty, я получил сообщение об ошибке, в котором в основном говорилось, что каждый аргумент, отличный от первого параметра моей функции rw_simulation, WASNНе устанавливается.Кажется, что-то передается в этот первый параметр, и это вызывает дополнительный аргумент.Я буквально не имею ни малейшего понятия, что это за первый параметр или откуда он может прийти.Может быть, имя функции?Но ... тогда что я должен делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...