首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python **kwags错误:函数接受6个位置参数,但给出了8个

python **kwags错误:函数接受6个位置参数,但给出了8个
EN

Stack Overflow用户
提问于 2018-05-23 15:47:43
回答 1查看 1.4K关注 0票数 2

当我试图开发梯度下降时,我发现了一个有趣的问题,我无法有效地使用**kwargs。我的功能看起来就像

代码语言:javascript
复制
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']
    ........

这个错误看起来是:

代码语言:javascript
复制
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: gradient_descent()接受6个位置参数,但给出了8个.

开发这个函数有什么我没注意到的吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-23 15:51:26

您的函数签名与您使用它的参数数不匹配:

代码语言:javascript
复制
gradient_descent(g,x,y,alpha,max_its,w,**kwargs)

有6个位置论证g,x,y,alpha,max_its,w,但是,在您的调用中:

代码语言:javascript
复制
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参数,因此它将如下所示:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50492607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档