Coding/Python 삽질기2020. 8. 25. 23:00

주말을 이용해 Flappy bird의 clone을 Pygame으로 간단히 구현해 보았다.

전체 소스코드는 아래에서 다운 받을 수 있다

Source code : https://github.com/chobocho/paperplane

스크린 샷

 

1. 기본구조 

 

Source code : https://github.com/chobocho/paperplane

 

chobocho/paperplane

Paper airplane game. Contribute to chobocho/paperplane development by creating an account on GitHub.

github.com

'Coding > Python 삽질기' 카테고리의 다른 글

[Pygame] Paper Plane Game 만들기  (0) 2020.08.25
[Python][AI] XOR 예제  (0) 2020.08.03
[Python][AI] Perceptron 예제  (0) 2020.07.28
[Python] fisher-yates shuffle  (0) 2020.07.20
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 8. 3. 22:33

아래와 같이 1개의 은닉층을 가진 신경망을 구성해 보았습니다.

 

import numpy as np

def sigmoid(x):
    return 1/(1+np.exp(-x))


def DeltaSGD(W1, W2, X, D):
    alpha = 0.9
    
    idx = 0
    for k in X:
        a1 = np.dot(W1, k)
        z1 = sigmoid(a1)
        
        a2 = np.dot(W2, z1)
        y = sigmoid(a2)
        
        e = D[idx] - y
        delta = y * (1-y) * e
        
        e1 = W2 * delta
        delta1 = z1 * (1-z1) * e1

        dw1 = alpha * delta1
        dw1 = dw1.reshape(4,1)
        x = k.reshape(1,3)
        W1 += np.dot(dw1, x)
        
        dw2 = alpha * delta * z1
        W2 += dw2
        idx+=1

        
def Train(epoch, x, y, W1, W2):
    for ep in range (epoch):
        DeltaSGD(W1, W2, x, y)

        
def main():
    W1 = np.random.randn(4,3)
    W2 = np.random.randn(4)
    x = np.array([[0, 0, 1], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
    y = np.array([0, 1, 1, 0])
    trainCount = 10000

    print('---Before Training---')
    print(W1)
    print(W2)
    print('---After Training---')
    Train(trainCount, x, y, W1, W2)
    print(W1)
    print(W2)
    
    print('---Result---')
    for k in x:
        a1 = np.dot(W1, k)
        z1 = sigmoid(a1)
        
        a2 = np.dot(W2, z1)
        y = sigmoid(a2)
        print(y) 
        
        
if __name__ == '__main__':       
    main()        
---Before Training---
[[-0.82542712 -0.65157477  0.09131077]
 [-0.12367401  1.07601221 -1.43941252]
 [-1.00401084 -0.04547823  0.97194216]
 [ 0.02719329 -0.22932678 -0.45809196]]
[ 0.16840571 -0.55206913  1.75255171 -0.54203599]
---After Training---
[[-6.3608461  -6.35976778  2.71126418]
 [ 3.61918383  3.62562196 -5.65337702]
 [-3.70117648 -3.70158904  5.76910815]
 [-1.51981715 -1.56682777 -0.58710802]]
[-11.12882426  -6.71646542   6.50908732  -1.52377049]
---Result---
0.01083108954199271
0.9896067125952175
0.9895881791368779
0.01040259419256147

 

'Coding > Python 삽질기' 카테고리의 다른 글

[Pygame] Paper Plane Game 만들기  (0) 2020.08.25
[Python][AI] XOR 예제  (0) 2020.08.03
[Python][AI] Perceptron 예제  (0) 2020.07.28
[Python] fisher-yates shuffle  (0) 2020.07.20
Posted by chobocho
TAG AI, ml, Python

댓글을 달아 주세요

Coding/Python 삽질기2020. 7. 28. 23:56

 

import numpy as np

def sigmoid(x):
    return 1/(1+np.exp(-x))


def DeltaSGD(W, X, D):
    alpha = 0.9
    dwSum = np.array([0] * 3)
    
    idx = 0
    for k in X:
        a1 = np.dot(k, W)
        y = sigmoid(a1)
        
        e = D[idx] - y
        delta = y * (1-y) * e
        
        dw = alpha * delta * k
        W += dw
        idx+=1

        
def Train(epoch, x, y, W1):
    for ep in range (epoch):
        DeltaSGD(W1, x, y)

        
def main():
    W1 = np.random.randn(3)
    x = np.array([[0, 0, 1], [0, 1, 1], [1, 1, 1], [1, 0, 0]])
    y = np.array([1, 1, 1, 0])

    Train(10000, x, y, W1)
    
    for k in x:
        a1 = np.dot(k, W1)
        z1 = sigmoid(a1)
        print(z1)    
        
        
if __name__ == '__main__':       
    main()  

 

0.9962960119369554
0.9999259998523653
0.9929612087250037
0.010332095384834877

'Coding > Python 삽질기' 카테고리의 다른 글

[Python][AI] XOR 예제  (0) 2020.08.03
[Python][AI] Perceptron 예제  (0) 2020.07.28
[Python] fisher-yates shuffle  (0) 2020.07.20
강아지 나이 계산기  (0) 2020.07.16
Posted by chobocho
TAG AI, ml, Python

댓글을 달아 주세요

Coding/Python 삽질기2020. 7. 20. 23:27
import random

number = [1, 2, 3, 4, 5, 7, 8]

def shuffle(number):
   for i in range (len(number)-1, 0, -1):
       j = random.randint(0, i)
       number[j], number[i] = number[i], number[j]
    
shuffle(number)

 동작을 보면 아래와 같이 변화 한다

[1, 2, 3, 4, 5, 7, 8]
[1, 8, 3, 4, 5, 7, 2]
[1, 8, 3, 4, 5, 7, 2]
[1, 8, 3, 4, 5, 7, 2]
[1, 8, 3, 4, 5, 7, 2]
[3, 8, 1, 4, 5, 7, 2]
[3, 8, 1, 4, 5, 7, 2]

* 참고: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

'Coding > Python 삽질기' 카테고리의 다른 글

[Python][AI] Perceptron 예제  (0) 2020.07.28
[Python] fisher-yates shuffle  (0) 2020.07.20
강아지 나이 계산기  (0) 2020.07.16
[Python] 소인수 분해  (0) 2020.07.10
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 1. 16. 00:08

minim_tg1.zip
9.44MB


minim_ta1.zip
8.52MB

 

Minim은 간단한 메모 관리 앱니다.

개인, 회사, 공공기관 어디에서도 되는 무료 앱입니다. 

어떻게 만들었나: https://chobocho.tistory.com/2461418

 

Posted by chobocho
TAG Memo, minim, Python

댓글을 달아 주세요

Coding/Python 삽질기2019. 12. 5. 23:32

떨어져 가는 기억력을 보완하고자,

Python 으로 메모관리 툴을 만들어 보기로 했다.

다운로드: https://chobocho.tistory.com/2461419

소스코드: https://github.com/chobocho/ChoboMemo2

1. 요구사항 정의

먼저, 아래와 같이 요구사항을 간단히 정리해 보았다.

2. 설계

그리고 이를 바탕으로 간단히 UML을 그려 보았다

3. 결과

완성된 모습은 아래와 같다

Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2018. 6. 12. 02:59

chobomemo_TF1.zip

Old version:

chobomemo_sj25a.zip



최신버전 받기 : https://www.dropbox.com/sh/smh7lsqrfw88t4a/AAAyNAYF0jUZnk6t3xQ_Gl5Ja?dl=0

16분할 메모앱



Source : https://github.com/chobocho/ChoboMemo



Update: 2019.10.10

'Coding > Python 삽질기' 카테고리의 다른 글

email parser  (0) 2018.09.12
ChoboMemo (16분할 메모)  (0) 2018.06.12
Python으로 파일 관리자 만들기  (0) 2018.05.31
hash 함수 sample code  (0) 2018.05.25
Posted by chobocho
TAG Python, 메모

댓글을 달아 주세요

Coding/Python 삽질기2018. 5. 31. 01:23

결과물 : https://github.com/chobocho/ChoboFileManager2


Python을 이용하여 아래와 같은 Window용 파일 관리자를 만들어 봅시다.


1. wxpython 과 pyinstaller 설치

2. 구현 할 기능 정의

3. UML Diagram

4. wxpython으로 윈도우 그리기

5. 단축키 기능 넣기

6. 꾸미기


'Coding > Python 삽질기' 카테고리의 다른 글

ChoboMemo (16분할 메모)  (0) 2018.06.12
Python으로 파일 관리자 만들기  (0) 2018.05.31
hash 함수 sample code  (0) 2018.05.25
[Python] ChoboFileManager2  (0) 2018.05.13
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2018. 5. 25. 00:53

import random

def myHash(value):
   h = 0
  
   for i in value:
      h = h * 31 + ord(i)

   return h % 10007

def main():
   BASE_STRING = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'
   for i in range(10):
      newString = ''.join([ BASE_STRING[int(random.random() * 100) %len(BASE_STRING)] for j in range(20)])
      print (newString + " " + str(myHash(newString)))
     

if __name__ == '__main__':
    main()


7ytpxp1Z2nA3sMkRGkSe 28
NSCZhaBgbo1aDe7bacKt 2853
arg9Ee8ohajddgEbAfaz 2089
kDvVhc7v978VyafkPesf 8633
B8nC9cE7AXFH1piz8nhq 4431
hxyxbp7njn2ub94dBEU4 1079
zy1mmAEiqhrLL3qZYAvD 4213
4Tnyyghhr2swGVbr22op 6905
wukHhfqELcR679etjcAD 3078
Pis31KbZ2xprxkCmrnMe 5180

'Coding > Python 삽질기' 카테고리의 다른 글

Python으로 파일 관리자 만들기  (0) 2018.05.31
hash 함수 sample code  (0) 2018.05.25
[Python] ChoboFileManager2  (0) 2018.05.13
Python 파일을 exe로 만들기  (0) 2018.04.26
Posted by chobocho
TAG hash, Python

댓글을 달아 주세요

Coding/Python 삽질기2018. 5. 13. 19:19

ChoboFileManager2_0531a1.exe

ChoboFileManager2_0601a.exe



기존에 만들었던 간단한 FileManager(http://chobocho.tistory.com/2461350?category=9609)를 Python3 + wxPython으로 변경 해보았다.



source : https://github.com/chobocho/ChoboFileManager2

'Coding > Python 삽질기' 카테고리의 다른 글

hash 함수 sample code  (0) 2018.05.25
[Python] ChoboFileManager2  (0) 2018.05.13
Python 파일을 exe로 만들기  (0) 2018.04.26
Python Tip  (0) 2018.04.26
Posted by chobocho
TAG Python

댓글을 달아 주세요