Я должен сделать сценарий, который создает модель для обнаружения двух стимулов, 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Не устанавливается.Кажется, что-то передается в этот первый параметр, и это вызывает дополнительный аргумент.Я буквально не имею ни малейшего понятия, что это за первый параметр или откуда он может прийти.Может быть, имя функции?Но ... тогда что я должен делать?