Á¤¼ºÈÆ
    mlp
mlp.py [3 KB]   mlp.png [2 KB]  




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import numpy as np
 
# ½Ã±×¸ðÀ̵å ÇÔ¼ö
def actf(x):
    return 1/(1+np.exp(-x))
 
# ½Ã±×¸ðÀ̵å ÇÔ¼öÀÇ ¹ÌºÐ°ª
def actf_deriv(x):
        return x*(1-x)
    
# XOR ¿¬»êÀ» À§ÇÑ 4Çà*2¿­ÀÇ ÀԷ Çà·Ä
# ¸¶Áö¸· ¿­Àº ¹ÙÀ̾¸¦ ³ªÅ¸³½´Ù. 
= np.array([[0,0,1], [0,1,1], [1,0,1], [1,1,1]])
                
# XOR ¿¬»êÀ» À§ÇÑ 4Çà*1¿­ÀÇ ¸ñÇ¥ Çà·Ä
= np.array([[0], [1], [1], [0]])
 
np.random.seed(5)
 
inputs = 3    # ÀÔ·ÂÃþÀÇ ³ëµå °³¼ö
hiddens = 6    # Àº´ÐÃþÀÇ ³ëµå °³¼ö
outputs = 1    # Ãâ·ÂÃþÀÇ ³ëµå °³¼ö
 
# °¡ÁßÄ¡¸¦ –1.0¿¡¼­ 1.0 »çÀÌÀÇ ³­¼ö·Î ÃʱâÈ­ÇÑ´Ù.
weight0 = 2*np.random.random((inputs, hiddens))-1   
weight1 = 2*np.random.random((hiddens, outputs))-1  
 
# ¹Ýº¹ÇÑ´Ù. 
for i in range(10000):
 
    # ¼ø¹æÇâ °è»ê
    layer0 = X                # ÀÔ·ÂÀ» layer0¿¡ ´ëÀÔÇÑ´Ù. 
    net1 = np.dot(layer0, weight0)    # Çà·ÄÀÇ °öÀ» °è»êÇÑ´Ù. 
    layer1 = actf(net1)        # È°¼ºÈ­ ÇÔ¼ö¸¦ Àû¿ëÇÑ´Ù. 
    layer1[:,-1= 1.0          #  ¸¶Áö¸· ¿­Àº ¹ÙÀ̾¸¦ ³ªÅ¸³½´Ù. 1.0À¸·Î ¸¸µç´Ù.
    net2 = np.dot(layer1, weight1)    # Çà·ÄÀÇ °öÀ» °è»êÇÑ´Ù. 
    layer2 = actf(net2)        # È°¼ºÈ­ ÇÔ¼ö¸¦ Àû¿ëÇÑ´Ù. 
 
    # Ãâ·ÂÃþ¿¡¼­ÀÇ ¿ÀÂ÷¸¦ °è»êÇÑ´Ù. 
    layer2_error = layer2-y
        
    # Ãâ·ÂÃþ¿¡¼­ÀÇ µ¨Å¸°ªÀ» °è»êÇÑ´Ù. 
    layer2_delta = layer2_error*actf_deriv(layer2)
 
    # Àº´ÐÃþ¿¡¼­ÀÇ ¿ÀÂ÷¸¦ °è»êÇÑ´Ù.
    # ¿©±â¼­ T´Â Çà·ÄÀÇ ÀüÄ¡¸¦ ÀǹÌÇÑ´Ù. 
    # ¿ª¹æÇâÀ¸·Î ¿ÀÂ÷¸¦ ÀüÆÄÇÒ ¶§´Â ¹Ý´ë¹æÇâÀ̹ǷΠÇà·ÄÀÌ ÀüÄ¡µÇ¾î¾ß ÇÑ´Ù. 
    layer1_error = np.dot(layer2_delta, weight1.T)
    
    # Àº´ÐÃþ¿¡¼­ÀÇ µ¨Å¸¸¦ °è»êÇÑ´Ù.
    layer1_delta = layer1_error*actf_deriv(layer1)
 
    # Àº´ÐÃþ->Ãâ·ÂÃþÀ» ¿¬°áÇϴ °¡ÁßÄ¡¸¦ ¼öÁ¤ÇÑ´Ù. 
    weight1 += -0.2*np.dot(layer1.T, layer2_delta)
 
    # ÀÔ·ÂÃþ->Àº´ÐÃþÀ» ¿¬°áÇϴ °¡ÁßÄ¡¸¦ ¼öÁ¤ÇÑ´Ù. 
    weight0 += -0.2*np.dot(layer0.T, layer1_delta)
print(layer2)            # ÇöÀç Ãâ·ÂÃþÀÇ °ªÀ» Ãâ·ÂÇÑ´Ù. 
cs

  µî·ÏÀÏ : 2020-08-02 [03:16] Á¶È¸ : 210 ´Ù¿î : 247   
 
¡â ÀÌÀü±Ûkeras_ex1
¡ä ´ÙÀ½±Ûgrad_descent
ÀΰøÁö´É ½Ç½À
¹øÈ£ ¨Ï Á¦ ¸ñ À̸§
ÀΰøÁö´É (õÀα¹ Àú) ÄÚµå
¨ÕÆÄÀÌÅäÄ¡ ù°ÉÀ½ (ÃÖ°ÇÈ£ Àú) ÄÚµå
34 ÀΰøÁö´É (õÀα¹ Àú) ÄÚµå Á¤¼ºÈÆ
33 ¦¦❶ (15Àå) ½Å°æ¸Á IV(ÄÁº¼·ç¼Ç ½Å°æ¸Á) Á¤¼ºÈÆ
32    ¦¦❷ ¨Õfashion2 Á¤¼ºÈÆ
31    ¦¦❷ ¨Õfashion1 Á¤¼ºÈÆ
30 ¦¦❶ (14Àå) ½Å°æ¸Á III(µö·¯´×) Á¤¼ºÈÆ
29    ¦¦❷ ¨ÕMNIST Á¤¼ºÈÆ
28 ¦¦❶ (13Àå) ½Å°æ¸Á II(MLP) Á¤¼ºÈÆ
27    ¦¦❷ lab1(MNIST) Á¤¼ºÈÆ
26    ¦¦❷ ¨Õkeras_ex2 Á¤¼ºÈÆ
25    ¦¦❷ ¨Õkeras_ex1 Á¤¼ºÈÆ
24    ¦¦❷ mlp Á¤¼ºÈÆ
23    ¦¦❷ ¨Õgrad_descent Á¤¼ºÈÆ
22 ¦¦❶ (12Àå) ½Å°æ¸Á I(ÆÛ¼ÁÆ®·Ð) Á¤¼ºÈÆ
21    ¦¦❷ xor Á¤¼ºÈÆ
20    ¦¦❷ perceptron2 Á¤¼ºÈÆ

[1][2][3][4][5][6]