Python中NumPy库提供的函数——np.random.randn的基本用法

一、基本用法

np.random.randn是NumPy中用于生成服从标准正态分布(均值为0,标准差为1)的随机数的函数。它生成的随机数遵循标准正态分布,也称为高斯分布。

以下是使用np.random.randn生成随机数的示例:

import numpy as np

# 生成一个随机数,服从标准正态分布
random_number = np.random.randn()
print(random_number)

# 生成一个包含多个随机数的 NumPy 数组
random_array = np.random.randn(3, 4)  # 生成一个 3x4 的数组,包含随机数
print(random_array)

运行结果:

这将生成一个或多个服从标准正态分布的随机数。如果要生成服从不同均值和标准差的正态分布随机数,可以使用函数,它为您指定均值和标准差的参数np.random.normal

请注意,生成的随机数是伪随机数,它们是通过确定性算法生成的,但通常在实际应用中足够随机。要使随机数生成具有确定性,可以设置随机种子,使用函数,此用于np.random.seed实验的可重复性非常重要

二、举例神经网络初始化过程中用到一些代码

class TwoLayerNet:

    def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01):
        # 初始化权重
        self.params = {}
        self.params['W1'] = weight_init_std * np.random.randn(input_size, hidden_size)
        self.params['b1'] = np.zeros(hidden_size)
        self.params['W2'] = weight_init_std * np.random.randn(hidden_size, output_size)
        self.params['b2'] = np.zeros(output_size)

(1)、代码的作用解释

1、self.params = {}:初始化一个名为 的空字典params。该字典将用于存储神经网络的参数,包括权重和偏差。

2、self.params['W1']:将第一层(隐藏层的输入)的权重矩阵初始化为'W1'。该权重矩阵的大小由input_size(输入特征的数量)和hidden_size(隐藏层中的神经元或单元的数量)决定。权重使用从均值 0 和标准差 的高斯(正态)分布中抽取的随机值进行初始化weight_init_std

3、self.params['b1']:将第一层(隐藏层的输入)的偏置向量初始化为'b1'。该偏置向量的大小由 确定hidden_size,并且用全零进行初始化。

4、self.params['W2']:将第二层(隐藏到输出)的权重矩阵初始化为'W2'hidden_size该权重矩阵的大小由(隐藏层中的神经元数量)和output_size(输出层中的神经元或单元数量)决定。与“W1”类似,权重是使用从均值为 0 和标准差 的高斯分布中抽取的随机值来初始化的weight_init_std

5、self.params['b2']:将第二层(隐藏到输出)的偏置向量初始化为'b2'。该偏置向量的大小由 确定output_size,并且用全零进行初始化。

(2)、weight_init_std的解释

这些权重和偏差通常是随机初始化的,以打破神经网络中的任何对称性,从而使其能够在训练期间学习有意义的表示。该 weight_init_std参数控制初始权重的范围。根据具体的神经网络实现,您可能会在训练期间看到对这些参数执行的进一步操作,例如用于学习的前向和后向传播。

weight_init_std,该值设置为 0.01。该值表示使用从高斯(正态)分布中抽取的随机值初始化神经网络层的权重时使用的标准偏差。

weight_init_std设置为0.01时,表示神经网络的初始权重取自均值为0、标准差为0.01的高斯分布。该值是神经网络中权重初始化的常见选择,并且在处理小规模数据集或深度网络时经常使用。较小的值会weight_init_std导致较小的初始权重,这有助于稳定训练过程并防止梯度在反向传播期间变得太大。

总体而言选择weight_init_std可能会影响神经网络从数据中学习的效率以及训练期间收敛的速度。不同的值可能更适合不同的任务和架构,因此它通常是一个可以在神经网络模型开发过程中调整的超参数。


 
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: np.random.randn()是NumPy用于生成符合标准正态分布(均值为0,标准差为1)的随机数的函数。它可以接受一个或多个参数来指定生成随机数的形状。 例如,np.random.randn(3)将生成一个长度为3的一维数组,其的元素符合标准正态分布。 ``` import numpy as np arr = np.random.randn(3) print(arr) # 输出示例:array([-0.66270912, 0.490389, -0.2716469]) ``` 如果将参数指定为多个值,将会生成对应形状的多维数组。 ``` import numpy as np arr = np.random.randn(2, 2) print(arr) # 输出示例:array([[-0.21786642, 0.11282491], # [-1.7598644 , 0.9035075 ]]) ``` np.random.randn()函数生成的随机数是服从正态分布的,因此它们的值会围绕着均值0左右波动,且波动范围依据标准差1来决定。生成的随机数可能正数也可能为负数,而且它们的取值范围没有明确的上下限。 需要注意的是,np.random.randn()函数实际上是调用了np.random.standard_normal()函数,即生成符合标准正态分布的随机数。如果需要自定义均值和标准差,可以使用np.random.normal()函数来生成随机数。 总结来说,np.random.randn()函数用于生成符合标准正态分布的随机数,可以指定形状,没有明确的取值上下限。 ### 回答2: np.random.randn()是numpy库的一个函数,用于生成服从标准正态分布的随机数。它的作用类似于np.random.normal(),但没有指定均值和标准差,只能生成标准正态分布的随机数。 它的使用方法很简单,不需要传入参数,直接调用即可生成一个服从标准正态分布的随机数。返回值是一个浮点数或一个浮点数数组,具体数量由调用该函数时的参数决定。 下面是一个示例: import numpy as np random_num = np.random.randn() print(random_num) 运行上面的代码,会输出一个服从标准正态分布的随机数。每次运行都会得到一个不同的随机数。 np.random.randn()常用于模拟实验、生成随机样本等场景。如果需要生成多个服从标准正态分布的随机数,可以传入一个整数参数n,表示生成n个随机数。 下面是一个生成多个随机数的示例: import numpy as np random_nums = np.random.randn(3) print(random_nums) 运行上面的代码,会输出一个包含3个服从标准正态分布的随机数的数组。 总结起来,np.random.randn()用于生成服从标准正态分布的随机数,可以不带参数生成一个随机数,也可以带一个整数参数生成多个随机数。 ### 回答3: np.random.randn() 是 numpy函数,用于产生指定形状的随机数数组,数组的元素服从标准正态分布(均值为0,方差为1)。 该函数的常见用法np.random.randn(d0, d1, ..., dn),其 d0, d1, ..., dn 分别表示数组的维度。函数返回一个具有指定维度的随机数组。 例如,若希望生成一个shape为(2, 3)的随机数组,则可以使用 np.random.randn(2, 3)。得到的数组可能如下所示: [[0.43216738, -0.7853901, 0.38932764] [1.16901737, -1.00525549, 0.12105563]] 生成的数组的元素是根据标准正态分布生成的,在实际应用经常用于模拟随机实验和生成随机样本。 需要注意的是,np.random.randn() 函数是从标准正态分布生成随机数,若需要根据其他均值和方差的分布生成随机数,可以使用 np.random.normal() 函数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值