python ** kwags Ошибка: функция принимает 6 позиционных аргументов, но было дано 8 - PullRequest
0 голосов
/ 23 мая 2018

Когда я пытался развить градиентный спуск, я обнаружил интересную проблему, которую я не могу эффективно использовать ** kwargs.Моя функция выглядит как

def gradient_descent(g,x,y,alpha,max_its,w,**kwargs):    
    # switch for verbose
    verbose = True
    if 'verbose' in kwargs:
        verbose = kwargs['verbose']

    # determine num train and batch size
    num_train = y.size()[1]
    batch_size = num_train
    if 'batch_size' in kwargs:
        batch_size = kwargs['batch_size']
    ........

, а ошибка выглядит следующим образом:

TypeError                                 Traceback (most recent call last)
<ipython-input-12-f71adb8a241b> in <module>()
  3 w_train = Variable(torch.Tensor(w_init), requires_grad=True)
  4 g = softmax; alpha_choice = 10**(-1); max_its = 100; num_pts = y.size; 
batch_size = 10;
----> 5 weight_hist_2,train_hist_2 = gradient_descent(g,x_train,y_train,alpha_choice,max_its,w_train,num_pts,batch_size,verbose = False)

TypeError: Gradge_descent () принимает 6 позиционных аргументов, но было дано 8.

Есть ли что-то, что я не заметил для разработки этой функции?

1 Ответ

0 голосов
/ 23 мая 2018

Ваша подпись функции не соответствует номеру параметра, с которым вы ее используете:

gradient_descent(g,x,y,alpha,max_its,w,**kwargs)

имеет 6 позиционных аргументов g,x,y,alpha,max_its,w, но в вашем вызове:

gradient_descent(g,x_train,y_train,alpha_choice,max_its,w_train,num_pts,batch_size,verbose = False)

Вы8 g,x_train,y_train,alpha_choice,max_its,w_train,num_pts,batch_size

Я догадался, что вы хотите использовать num_pts в качестве аргумента batch_size, поэтому он будет выглядеть так:

weight_hist_2,train_hist_2 = gradient_descent(
    g,
    x_train,
    y_train,
    alpha_choice,
    max_its,
    w_train,
    batch_size=num_pts,
    verbose = False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...