擅长:python、mysql、java
<p>堆栈跟踪准确地告诉您需要知道的内容:</p>
<blockquote>
<p>TypeError: grad() takes exactly 4 arguments (3 given)</p>
</blockquote>
<p>您的<code>grad</code>签名反映了4个参数要求:</p>
<pre><code>def grad(self, thetas, X, label):
</code></pre>
<p>我看到您试图在对<code>grad()</code>的调用中使用元组解包:</p>
<pre><code>return sqrt(sum((grad(x0, *args))))
</code></pre>
<p>调用<code>grad()</code>时传递的隐式<code>self</code>将位于参数列表中的<code>self</code>位置,<code>x0</code>将位于<code>thetas</code>位置,留下<code>X</code>和<code>label</code>由<code>*args</code>填充。尝试打印<code>args</code>或用<a href="https://docs.python.org/2/library/pdb.html" rel="nofollow">PDB</a>检查它以确认它包含两个项目。由于您在尝试解包不可iterable时没有得到<code>ValueError</code>,因此它可能是正确的类型。听起来它可能没有你所期望的两个项目。你知道吗</p>