私は一晩で 2 つのよくある間違いに遭遇したので、それらを共有したいと思います。
属性エラー: 'xxx' オブジェクトには属性 'xxx' がありません
定義されていますが、コードは依然として失敗します。!!
理由 1: Int () の二重下線は無視されます (__ で二重下線が使用されている場合は紫色になりますが、これは正しいです)
理由 2: パスに中国語が含まれています。
TypeError: xxx は 2 つの位置引数を取りますが、3 つが指定されました
理由: パラメータの受け渡しの問題。注: self は作成されたクラス インスタンス自体を表すため、さまざまなプロパティを内部的に self にバインドできます。インスタンスを作成するときは、空のパラメーターを渡すことはできません。メソッドに一致するパラメーターを渡す必要があります。ただし、self を渡す必要はないことに注意してください。Python インタープリターはインスタンス変数自体を渡します。
エラーのデモンストレーション:
class ABC:
...
def channel(self, x):
b, c, h, w = x.shape
x = x.reshape(b, 2, -1, h, w)
return x
def forward(self, x):
...
out = self.channel(out, 2)#传了2个参数,报错!
return
正しいデモンストレーション:
class ABC:
...
def channel(self, x, group):
b, c, h, w = x.shape
x = x.reshape(b, group, -1, h, w)
return x
def forward(self, x):
...
out = self.channel(out, 2)#传了2个参数,x=out,group=2
return
または
class ABC:
...
def channel(self, x, group=2):
b, c, h, w = x.shape
x = x.reshape(b, group, -1, h, w)
return x
def forward(self, x):
...
out = self.channel(out)#传了1个参数,x=out
return