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

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

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

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

Game file :

paper_plane_v0.1.zip
8.37MB

 

스크린 샷

 

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. 7. 16. 00:19

강아지 나이를 인간 나이로 바꿔주면 위와 같은 그래프가 나온다고 한다.

강아지 나이 와 인간 나이 변환표

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

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

[Python] fisher-yates shuffle  (0) 2020.07.20
강아지 나이 계산기  (0) 2020.07.16
[Python] 소인수 분해  (0) 2020.07.10
[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 7. 10. 00:07
import math

def get_prime_factor(number):
    result = []

    if number < 2:
        return result

    while number % 2 == 0:
        result.append('2')
        number /= 2

    for i in range (3, int(math.sqrt(number)) + 1, 2):
        if number % i == 0:
            result.append(str(i))
            number /= i

    if number > 2:
        result.append(str(int(number)))

    return result

def testPrimeFactor():
    assert len(get_prime_factor(-1)) == 0
    assert "2x2x3" == 'x'.join(get_prime_factor(12))
    assert "2x2x5x5" == 'x'.join(get_prime_factor(100))
    assert "67x337x2797x14251" == 'x'.join(get_prime_factor(900000001213))

if __name__ == '__main__':
    testPrimeFactor()

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

강아지 나이 계산기  (0) 2020.07.16
[Python] 소인수 분해  (0) 2020.07.10
[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
[Python] venv 사용  (0) 2020.04.15
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 4. 22. 23:28

ChoboTimer V0.17 으로 업데이트 하였습니다. 

* 타이머에 메모를 넣을수 있도록 수정하였습니다.

chobotimer_td2.zip
8.66MB

ChoboTimer에 대한 자세한 내용은 아래 링크를 참고하세요.

https://chobocho.tistory.com/2461431

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

[Python] 소인수 분해  (0) 2020.07.10
[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
[Python] venv 사용  (0) 2020.04.15
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 4. 15. 19:03
// 만들기
python -m venv ./snake_game

// 실행
cd \snake_env\Scripts
activate.bat

// 종료하기
deactivate.bat

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

[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
[Python] venv 사용  (0) 2020.04.15
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Minim / 간단한 메모관리 툴 (TG1)  (0) 2020.01.16
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 2. 29. 23:20

주말의 무료함을 달래고자, 파이썬으로 간단히 Timer 앱을 만들어 보았습니다.

https://github.com/chobocho/timer

 

chobocho/timer

simple timer for windows. Contribute to chobocho/timer development by creating an account on GitHub.

github.com

 

 

먼저 아래아 같이 간단히 User case diagram을 대충 그려 봅니다.

그리고 star uml을 사용해서 대충 class diagram을 그립니다.

그리고 star uml의 code generator 기능을 이용해 skeleton code를 생성 합니다.

실행파일:

chobotimer_tc3.zip
8.66MB

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

[Python] venv 사용  (0) 2020.04.15
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Minim / 간단한 메모관리 툴 (TG1)  (0) 2020.01.16
Minim / 간단한 메모관리 툴 (SL6)  (0) 2019.12.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

댓글을 달아 주세요