python-3.x - sigmoid() 接受 1 个位置参数,但给出了 2 个
问题描述
为什么我会收到此错误
sigmoid() 接受 1 个位置参数,但给出了 2 个
在使用函数 yHat = NN.forward(X)??
class Neural_Networks(object):
def __init__(self):
self.inputLayerSize =2
self.outputLayerSize =1
self.hiddenLayerSize = 3
#weights
self.W1 = np.random.randn(self.inputLayerSize, self.hiddenLayerSize)
self.W2 = np.random.randn(self.hiddenLayerSize, self.outputLayerSize)
def forward(self,X):
#propogates input through network
self.z2 = np.dot(X, self.W1)
self.a2 = self.sigmoid( self.z2 )
self.Z3 = np.dot(self.a2,self.W2)
yHat = self.sigmoid(self.z3)
return yHat
def sigmoid(z):
return 1/(1+np.exp(-z))
解决方案
您将其用作实例方法,因此您必须将其包含self
为第一个参数
class Neural_Networks(object):
def __init__(self):
self.inputLayerSize =2
self.outputLayerSize =1
self.hiddenLayerSize = 3
#weights
self.W1 = np.random.randn(self.inputLayerSize, self.hiddenLayerSize)
self.W2 = np.random.randn(self.hiddenLayerSize, self.outputLayerSize)
def forward(self,X):
#propogates input through network
self.z2 = np.dot(X, self.W1)
self.a2 = self.sigmoid( self.z2 )
self.Z3 = np.dot(self.a2,self.W2)
yHat = self.sigmoid(self.z3)
return yHat
def sigmoid(self, z):
return 1/(1+np.exp(-z))
相反,如果您想sigmoid
用作类方法,则需要向其添加@staticmethod
装饰器,例如:
@staticmethod
def sigmoid(z):
return 1/(1+np.exp(-z))
使其成为静态方法可能是正确的选择,因为您不在方法中使用 self 。
推荐阅读
- android - 如何在回收站视图中为每个项目设置不同的高度
- java - 如何在命令行上使用第三方 Maven 依赖项?
- javascript - 在 TypeScript 中使用 forEach 返回布尔值
- go - 如何阻止 Go 1.11 构建 quicktemplate .qtpl 文件?
- javascript - 在提交之前修改表单数据?
- angularjs - 从谷歌脚本获取数据时,角度变量不会在页面上刷新
- ruby-on-rails - 如何生成和验证来自多个表格单元格的关联数据
- python - 无法使用反向名称解析路径的 URL 字符串
- shell - 为什么 grep 不返回所有数字?
- javascript - 弹出窗口未在 switch 语句中打开