def __init_weight(self, weight_init_std): """设定权重的初始值 Parameters ---------- weight_init_std : 指定权重的标准差(e.g. 0.01) 指定'relu'或'he'的情况下设定“He的初始值” 指定'sigmoid'或'xavier'的情况下设定“Xavier的初始值” """ all_size_list = [self.input_size] + self.hidden_size_list + [self.output_size] for idx in range(1, len(all_size_list)): scale = weight_init_std if str(weight_init_std).lower() in ('relu', 'he'): scale = np.sqrt(2.0 / all_size_list[idx - 1]) # 使用ReLU的情况下推荐的初始值 elif str(weight_init_std).lower() in ('sigmoid', 'xavier'): scale = np.sqrt(1.0 / all_size_list[idx - 1]) # 使用sigmoid的情况下推荐的初始值 self.params['W' + str(idx)] = scale * np.random.randn(all_size_list[idx-1], all_size_list[idx]) self.params['b' + str(idx)] = np.zeros(all_size_list[idx])
时间: 2024-04-03 07:35:32 浏览: 144
这个函数用于初始化神经网络的权重。它根据给定的权重初始化标准差,计算并设置每一层的权重和偏置项。如果指定的是'Relu'或'he',则使用He的初始值;如果指定的是'sigmoid'或'xavier',则使用Xavier的初始值。这个函数同时考虑了每一层的输入和输出大小,以确保初始值的合理性。初始化完成后,权重和偏置项被存储在params字典中。
阅读全文