python - Python 中的布尔值、随机状态
问题描述
我正在研究 Adaline SGD 方法,我对我的代码有一些疑问(我不会将整个算法用于说明它的广泛性):
def __init__(self, eta=0.01, n_iter=50, shuffle=True, random_state =None) :
self.eta = eta
self.n_iter=n_iter
self.w_initialized=False
self.shuffle=True
self.random_state = random_state
def partial_fit(self,X,y):
"""Fit training data without reinitializing the weights"""
if not self.w_initialized:
self._initialize_weights(X.shape[1])
if y.ravel().shape[0]>1:
for xi, target in zip(X,y):
self._update_weights(xi, target)
def _shuffle(self,X,y):
"""Suffle training data"""
r=self.rgen.permutation(len(y))
return X[r], y[r]
def _initialize_weights(self,m):
"""Initialize weights to small random numbers"""
self.rgen= np.random.RandomState(self.random_state)
self.w_=self.rgen.normal(loc= 0.0, scale= 0.01, size = 1+m)
self.w_initialized=True
为什么在开始时
self.w_initialized
设置为False
中,而后def __init__(self, eta=0.01, n_iter=50, shuffle=True, random_state =None)
设置为True
在def _initialize_weights(self,m)
结束时?我不明白它是如何工作的。为什么
r=self.rgen.permutation(len(y))
它没有写到...len(y)+1
涵盖整个列表?(注意:在下一行,X[r], y[r]
我假设返回相同的向量交替随机,如果我错了,请告诉我)m
变量在做什么self.w_=self.rgen.normal(loc= 0.0, scale= 0.01, size = 1+m)
?我知道的意思size
,但是,将m加1后的结果是什么?
让我知道是否需要更多上下文。对不起,如果我的英语不完美。
解决方案
回复 1.:
self.w_initialized
似乎表明权重是否已初始化,因此当创建对象时__init__()
不是这种情况,但在_initialize_weights()
调用并完成之后就是这种情况,因此self.w_initialized
设置True
为反映这一点。它实际上并没有做任何事情,除了明确使用现在已经完成的对象的任何事情。
回复 2:
不清楚为什么您认为permutation()
需要长度 +1?有一个正好是 的长度的排列似乎是有意义的y
,假设它被用于下一行来获得y[r]
?
至于你的问题的第二部分,这行字面意思是它所说的:它返回 tuple X[r], y[r]
,因此是一个向量,其中的元素来自X
indexed byr
并且与 for 相同y
。看起来,它们是X
and的随机排列,而不知道更多关于您没有共享的代码或导入的信息。y
回复 3.:
同样,您的问题令人惊讶:m
是否将参数传递给_initialize_weights()
,将 1 添加到其中,并将结果值传递给size
参数self.rgen.normal
- 究竟有什么不清楚的地方?
一般的:
从您的问题来看,您似乎对 Python 非常陌生,我建议您阅读 Python 中变量、函数和对象的基础知识,然后重新访问代码。您的问题实际上与代码的含义无关,但似乎是关于 Python 基本工作原理的问题。我假设您所谓的“您的代码”实际上是您获得并试图理解或修改的代码。
推荐阅读
- google-maps - 颤振批处理http请求
- local-storage - 如何在 Gatsby 的 LocalStorage 中使用添加和访问数据
- javascript - 通过从数组中给出的键过滤对象的值并在 jsx 中呈现它们
- kubernetes - 在 Istio Ingress 上使用letsencrypt 证书
- javascript - 为什么这个 Promise.all() 函数只返回最后解析的值?
- excel - 如何在单个公式中运行 VLOOKUPS 和计算?
- ios - 由于关闭的商店 URL,Facebook 拒绝 Facebook 登录激活
- python - Python输入多行和空格
- javascript - 如何在 JavaScript 中的哈希表上实现这个“计数器”?
- javascript - “npm start”导致错误 - ENOENT:没有这样的文件或目录... package.json