>

기계 학습을 더 잘 이해하기 위해이 코드를 작성했지만 올바른 길을 가고 있는지 잘 모르겠습니다. 지금까지 파이썬 3.7을 사용하여 화면 전체에 무작위 구불 구불 한 선을 그립니다.

import turtle
import random
# Sets the Turtle main screen color 
turtle.bgcolor("pink")
# Settings for bug sprite
bug = turtle.Turtle()
bug.penup()
bug.color("red")
bug_x = bug.setx(-150)
bug_y = bug.sety(12)
bug.pendown()
# Settings for food sprite
food = turtle.Turtle()
food.penup()
food.color("green")
food_x = food.setx(160)
food_y = food.sety(59)
food.pendown()

# Main Loop
while True:

    # X and Y coordinate of Food
    destination = [160,59]
    # X and Y coordinate of Bug
    x_1 = bug.xcor()
    y_1 = bug.ycor()
    origin = [x_1,y_1]
    learn = .10
    bias = 0
    # Weights
    wghts = [random.uniform(-1,1),random.uniform(-1,1),random.uniform(-1,1),
             random.uniform(-1,1),random.uniform(-1,1),random.uniform(-1,1)]
    #print(wghts)


    # Output Neurons
    output_1 = (wghts[0] * origin[0]) + (wghts[1] * origin[1]) + bias
    output_2 = (wghts[2] * origin[0]) + (wghts[3] * origin[1]) + bias
    output_3 = (wghts[4] * origin[0]) + (wghts[5] * origin[1]) + bias
    #Relu Function
    if output_1 >= 0.1:
        output_1 = output_1
    else:
        output_1 = 0
    if output_2 >= 0.1:
        output_2 = output_2
    else:
        output_2 = 0
    if output_3 >= 0.1:
        output_3 = output_3
    else:
        output_3 = 0
    # Compares food/destination X and Y with bug/origin X and Y.
    # applies update ("learn") to all weights
    if origin[0] != destination[0] and origin[1] != destination[1]:
        wghts[0] = wghts[0] + learn
        wghts[1] = wghts[1] + learn
        wghts[2] = wghts[2] + learn
        wghts[3] = wghts[3] + learn
        wghts[4] = wghts[4] + learn
        wghts[5] = wghts[5] + learn
    else:
        wghts[0] = wghts[0] 
        wghts[1] = wghts[1] 
        wghts[2] = wghts[2] 
        wghts[3] = wghts[3] 
        wghts[4] = wghts[4] 
        wghts[5] = wghts[5]
    #print(wghts)
    #print("\n")
    # Creates a barrier for turtle
    bug_1a = int(bug.xcor())
    bug_2a = int(bug.ycor())
    if bug_1a > 300 or bug_2a > 300:
        bug.penup()
        bug.setx(5)
        bug.sety(5)
        bug.pendown()
    if bug_1a < -300 or bug_2a < -300:
        bug.penup()
        bug.setx(5)
        bug.sety(5)
        bug.pendown()
    # Output values applied to turtle direction controls
    bug.forward(output_1)
    bug.right(output_2)
    bug.left(output_3)


  • 답변 # 1

    귀하의 프로그램에서 볼 수있는 문제 :

    와이즈 비즈  이전 반복에서 아무것도 배우지 않습니다. 루프를 통해 매번 무작위로 재설정됩니다.

    와이즈 비즈 wghts  그리고 output_1  새로 초기화 된 output_2 에서 계산  따라서 다음과 같이 변경되었습니다 :

    output_3
    
    

    wghts 에 반영되지 않습니다  변수.

    버그의 X 및 Y 좌표를 추가하고이를 회전 각도로 사용합니다. 두번. 그게 어떤 의미인지는 모르겠지만 신경망 인 것 같습니다.

    다음 코드와 동기화되지 않도록 코드에서 장벽 검사를 너무 늦게 수행합니다. 버그가 움직이지 않으므로 미리 확인하십시오.

    다음 코드 정리는 버그를 덜 무작위로 만들지 않습니다. 코드를보다 쉽게 ​​사용할 수 있기를 바랍니다.

    if origin[0] != destination[0] and origin[1] != destination[1]:
            wghts[0] = wghts[0] + learn
            ...
            wghts[5] = wghts[5] + learn
    
    
    output_*

  • 이전 jquery - 인라인 일 때 javascript 변수가 정의되지 않았습니다
  • 다음 python - uuid를 가져 오면 uwsgi 데몬이 중단되는 이유는 무엇입니까?