在层归一化中,我们计算整个输入层的均值和方差(而不是在批处理归一化中跨批处理)。然后根据均值和方差对输入层进行归一化,然后返回伽马乘以归一化层加beta。
我的问题是,分别是形状为(1,1)和(1,1)的gamma和beta标量,还是它们的形状分别是(1,隐藏单元数)和(1,隐藏单元数)。
这是我实现层归一化的方式,这是正确的!
def layernorm(layer, gamma, beta):
mean = np.mean(layer, axis = 1, keepdims = True)
variance = np.mean((layer - mean) ** 2, axis=1, keepdims = True)
layer_hat = (layer - mean) * 1.0 / np.sqrt(variance + 1e-8)
outpus = gamma * layer_hat + beta
return outpus
其中gamma和beta的定义如下:
gamma = np.random.normal(1, 128)
beta = np.random.normal(1, 128)
答案 0 :(得分:0)
根据Tensorflow's implementation,假定输入的形状为inputField = driver.findElement(webdriver.By.id('gbqfq'));
driver.executeScript("arguments[0].setAttribute('value', '" + longstring +"')", inputField);
,gamma和beta的形状为[B, rest]
。 rest
对于2维输入可以是(h,),对于4维输入可以是(h,w,c)。