Cara menggunakan NP.RANDOM.UNIFORM pada Python

Pertama, seperti yang Anda lihat dari dokumentasi numpy.random.randn menghasilkan sampel dari distribusi normal, sementara numpy.random.Rand dari seragam (dalam kisaran [0,1)).

Show

Kedua, mengapa distribusi seragam tidak berhasil? Alasan utama dalam hal ini adalah fungsi aktivasi, terutama dalam kasus Anda di mana Anda menggunakan fungsi sigmoid. Plot sigmoid terlihat seperti berikut:

Cara menggunakan NP.RANDOM.UNIFORM pada Python

Jadi Anda dapat melihat bahwa jika input Anda jauh dari 0, kemiringan fungsi berkurang cukup cepat dan sebagai hasilnya Anda mendapatkan gradien kecil dan pembaruan bobot kecil. Dan jika Anda memiliki banyak layer - gradien tersebut dikalikan berkali-kali dalam back pass, bahkan gradien yang "tepat" setelah multiplikasi menjadi kecil dan berhenti membuat pengaruh apa pun. Jadi, jika Anda memiliki banyak bobot yang membawa input Anda ke wilayah-wilayah tersebut, jaringan Anda sulit untuk dilatih. Itu sebabnya itu adalah praktik yang biasa untuk menginisialisasi variabel jaringan di sekitar nilai nol. Ini dilakukan untuk memastikan Anda mendapatkan gradien yang masuk akal (mendekati 1) untuk melatih jaring Anda.

Namun, distribusi seragam bukanlah sesuatu yang benar-benar tidak diinginkan, Anda hanya perlu membuat rentang lebih kecil dan lebih dekat ke nol. Sebagai salah satu praktik yang baik adalah menggunakan inisialisasi Xavier. Dalam pendekatan ini Anda dapat menginisialisasi bobot Anda dengan:

1) Distribusi normal. Dimana mean adalah 0 dan var = sqrt(2. / (in + out)), di mana in - adalah jumlah input ke neuron dan out - jumlah output.

2) Menyatukan distribusi dalam kisaran [-sqrt(6. / (in + out)), +sqrt(6. / (in + out))]

Terlepas dari apa yang disebutkan di atas, .uniform() juga dapat digunakan untuk menghasilkan beberapa angka acak juga dengan bentuk yang diinginkan yang tidak mungkin dengan .random()

np.random.seed(99)
np.random.random()

#generates 0.6722785586307918

sedangkan kode berikut

np.random.seed(99)
np.random.uniform(0.0, 1.0, size = (5,2))

#generates this 
array([[0.67227856, 0.4880784 ],
       [0.82549517, 0.03144639],
       [0.80804996, 0.56561742],
       [0.2976225 , 0.04669572],
       [0.9906274 , 0.00682573]])

Ini tidak dapat dilakukan dengan acak (...), dan jika Anda menghasilkan angka acak (...) untuk hal-hal terkait ML, sebagian besar waktu, Anda akan berakhir menggunakan .uniform(...)

Randn acak numpy dengan Python | np acak randn()
Fungsi Numpy.random.randn() mengembalikan sampel (atau sampel) dari distribusi normal standar.
Dalam Python, numpy.random.randn() membuat array dengan bentuk tertentu dan mengisinya dengan nilai yang ditentukan secara acak sesuai standar Gaussian/distribusi normal. Fungsi np random randn() mengembalikan semua nilai dalam bentuk float dan rata-rata distribusi =0 dan varians = 1.

#python #numpy #pemrograman #pengembangan

appdividend.com

Numpy.random.randn() mengembalikan sampel (atau sampel) dari distribusi normal standar. Jika parameter positif disediakan, itu menghasilkan array.

View Discussion

Improve Article

Save Article

  • Read
  • Discuss
  • View Discussion

    Improve Article

    Save Article

    With the help of choice() method, we can get the random samples of one dimensional array and return the random samples of numpy array.

    Syntax : numpy.random.choice(a, size=None, replace=True, p=None)

    Parameters:

    1) a – 1-D array of numpy having random samples.

    2) size – Output shape of random samples of numpy array.

    3) replace – Whether the sample is with or without replacement.

    4) p – The probability attach with every samples in a. 

    Output : Return the numpy array of random samples.

    Example #1 :

    In this example we can see that by using choice() method, we are able to get the random samples of numpy array, it can generate uniform or non-uniform samples by using this method.

    Python3

    import numpy as np

    import matplotlib.pyplot as plt

    gfg = np.random.choice(13, 5000)

    count, bins, ignored = plt.hist(gfg, 25, density = True)

    plt.show()

    Output :

    Example #2 :

    Python3

    import numpy as np

    import matplotlib.pyplot as plt

    gfg = np.random.choice(5, 1000, p =[0.2, 0.1, 0.3, 0.4, 0])

    count, bins, ignored = plt.hist(gfg, 14, density = True)

    plt.show()

    Output :


    View Discussion

    Improve Article

    Save Article

  • Read
  • Discuss
  • View Discussion

    Improve Article

    Save Article

    numpy.random.random() is one of the function for doing random sampling in numpy. It returns an array of specified shape and fills it with random floats in the half-open interval [0.0, 1.0).

    Syntax : numpy.random.random(size=None)

    Parameters :
    size : [int or tuple of ints, optional] Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn. Default is None, in which case a single value is returned.

    Return : Array of random floats in the interval [0.0, 1.0). or a single such random float if size not provided.

    Code #1 :

    import numpy as geek

    out_arr = geek.random.random(size = 3)

    print ("Output 1D Array filled with random floats : ", out_arr) 

    Output :

    Output 1D Array filled with random floats :  [ 0.21698734  0.01617363  0.70382199]
    

    Code #2 :

    import numpy as geek

    out_arr = geek.random.random(size =(2, 4))

    print ("Output 2D Array filled with random floats : ", out_arr) 

    Output :

    Output 2D Array filled with random floats :  [[ 0.95423066  0.35595927  0.76048569  0.90163066]
     [ 0.41903408  0.85596254  0.21666156  0.05734769]]
    

     
    Code #3 :

    import numpy as geek

    out_arr = geek.random.random((2, 3, 2))

    print ("Output 3D Array filled with random floats : ", out_arr) 

    Output :

    Output 3D Array filled with random floats :  [[[ 0.07861816  0.79132387]
      [ 0.9112629   0.98162851]
      [ 0.0727613   0.03480279]]
    
     [[ 0.11267727  0.07631742]
      [ 0.47554553  0.83625053]
      [ 0.67781339  0.37856642]]]