PyTorch가 올바르게 최적화되지 않는 것 같습니다.

wny

StackOverflow가 LaTeX를 지원하지 않기 때문에이 질문을 Data Science StackExchange 사이트에 게시했습니다. 이 사이트가 더 적절할 수 있으므로 여기에 링크하십시오.

올바르게 렌더링 된 LaTeX에 대한 질문은 여기에 있습니다 : https://datascience.stackexchange.com/questions/48062/pytorch-does-not-seem-to-be-optimizing-correctly

아이디어는 위상이 다른 사인파의 합을 고려하고 있다는 것입니다. 웨이브는 s[0, 2pi] 간격의 일부 샘플 속도 샘플링됩니다 . 모든 샘플 지점에서 파동의 합이 최소화되도록 위상을 선택해야합니다.

아래는 Python 코드입니다. 최적화가 올바르게 계산되지 않는 것 같습니다.

import numpy as np
import torch

def phaseOptimize(n, s = 48000, nsteps = 1000):
    learning_rate = 1e-3

    theta = torch.zeros([n, 1], requires_grad=True)
    l = torch.linspace(0, 2 * np.pi, s)
    t = torch.stack([l] * n)
    T = t + theta

    for jj in range(nsteps):
        loss = T.sin().sum(0).pow(2).sum() / s
        loss.backward()
        theta.data -= learning_rate * theta.grad.data

    print('Optimal theta: \n\n', theta.data)
    print('\n\nMaximum value:', T.sin().sum(0).abs().max().item())

다음은 샘플 출력입니다.

phaseOptimize(5, nsteps=100)


Optimal theta: 

 tensor([[1.2812e-07],
        [1.2812e-07],
        [1.2812e-07],
        [1.2812e-07],
        [1.2812e-07]], requires_grad=True)


Maximum value: 5.0

나는 이것이 방송과 관련이 있다고 가정합니다.

T = t + theta

및 / 또는 손실 함수를 계산하는 방식.

최적화가 잘못되었는지 확인하는 한 가지 방법은 $ [0, 2 \ pi] $에 균일하게 분포 된 배열 $ \ theta_1, \ dots, \ theta_n $의 임의 값에서 손실 함수를 평가하는 것입니다. 이 경우 최대 값은 거의 항상에서보고 한 최대 값보다 훨씬 낮습니다 phaseOptimize(). 사실 $ n = 2 $ 인 경우를 고려하여 $ \ theta_1 = 0 $ 및 $ \ theta_2 = \ pi $로 평가하는 것이 훨씬 쉽습니다. 이 경우 우리는 다음을 얻습니다.

phaseOptimize(2, nsteps=100)

Optimal theta: 

 tensor([[2.8599e-08],
        [2.8599e-08]])


Maximum value: 2.0

반면에

theta = torch.FloatTensor([[0], [np.pi]])
l = torch.linspace(0, 2 * np.pi, 48000)
t = torch.stack([l] * 2)
T = t + theta

T.sin().sum(0).abs().max().item()

생산하다

3.2782554626464844e-07
세르 기 딤 첸코

T루프 내에서 컴퓨팅을 이동해야합니다 . 그렇지 않으면 항상 동일한 상수 값을 가지므로 지속적인 손실이 발생합니다.

또 다른 한 가지는 theta인덱스에서 다른 값 으로 초기화 하는 것입니다 . 그렇지 않으면 문제의 대칭 적 특성으로 인해 기울기가 모든 인덱스에 대해 동일합니다.

또 다른 점은 그래디언트를 0으로 backward누적 해야한다는 것입니다.

이것은 작동하는 것 같습니다.

def phaseOptimize(n, s = 48000, nsteps = 1000):
    learning_rate = 1e-1

    theta = torch.zeros([n, 1], requires_grad=True)
    theta.data[0][0] = 1
    l = torch.linspace(0, 2 * np.pi, s)
    t = torch.stack([l] * n)

    for jj in range(nsteps):
        T = t + theta
        loss = T.sin().sum(0).pow(2).sum() / s
        loss.backward()
        theta.data -= learning_rate * theta.grad.data
        theta.grad.zero_()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

상태가 올바르게 업데이트되지 않는 것 같습니다.

분류에서Dev

sklearn 선형 회귀가 올바르게 맞지 않는 것 같습니다.

분류에서Dev

Django 서버가 올바르게 시작되지 않는 것은 mysql 문제인 것 같습니다.

분류에서Dev

HTML 노드를 가져올 때 PHP appendChild가 올바르게 작동하지 않는 것 같습니다.

분류에서Dev

GuestAdditions가 올바르게 설치 (6.0.2)되는 것 같지만 실행되지 않습니다.

분류에서Dev

코드가 올바르게 읽히는 것 같지만 실행되지 않습니다.

분류에서Dev

Python ANTLR4 예제-파서가 올바르게 구문 분석되지 않는 것 같습니다.

분류에서Dev

Java가 테이블의 한쪽면이 올바르게 인쇄되지 않는 것 같습니다.

분류에서Dev

파이썬 함수가 올바르게 반복되지 않는 것 같습니다.

분류에서Dev

CPU 코어 수가 올바르지 않은 것 같습니다.

분류에서Dev

CPU 코어 수가 올바르지 않은 것 같습니다.

분류에서Dev

Mechanicalsoup의 StatefulBrowser가 while True 루프에서 올바르게 새로 고쳐지지 않는 것 같습니다.

분류에서Dev

AWS Elastic mapreduce가 스트리밍을 jar로 올바르게 변환하지 않는 것 같습니다.

분류에서Dev

AWS Elastic mapreduce가 스트리밍을 jar로 올바르게 변환하지 않는 것 같습니다.

분류에서Dev

함수 후 jQuery가 테이블에서 올바르게 작동하지 않는 것 같습니다.

분류에서Dev

TinyXML2가 내 파일을 올바르게로드하지 않는 것 같습니다.

분류에서Dev

세마포가 여러 스레드에서 올바르게 작동하지 않는 것 같습니다.

분류에서Dev

computeDistanceBetween이 올바르게 계산되지 않는 것 같습니다.

분류에서Dev

Plotnine 테마 element_blank ()가 작동하지 않는 것 같습니다. 아마도 패키지를 올바르게 가져 오지 않았습니까?

분류에서Dev

내 클래스가 바인딩이 아닌 API의 JSON 응답으로 올바르게 매핑되지 않는 것 같습니다.

분류에서Dev

ATBS Conway의 Game of Life 코드가 올바르지 않은 것 같습니다.

분류에서Dev

clang 및 gcc의이 경고가 올바르지 않은 것 같습니다.

분류에서Dev

Quicksort 데스크 테스트가 올바르지 않은 것 같습니다.

분류에서Dev

Python 용 Pandas를 설치했는데 데이터 프레임 참조가 올바르게 표시되지 않는 것 같습니다.

분류에서Dev

redis 카운터를 올바르게 유지할 수없는 것 같습니다.

분류에서Dev

magrittr의 복합 파이프 % <> %를 사용하면 올바르게 할당되지 않는 것 같습니다.

분류에서Dev

react canvas.scale이 설정되었을 때 올바르게 작동하지 않는 것 같습니다.

분류에서Dev

Powershell을 Vim의 셸로 설정 : 명령이 올바르게 전달되지 않는 것 같습니다.

분류에서Dev

VM의 cordapp-example이 올바르게 시작되지 않는 것 같습니다.

Related 관련 기사

  1. 1

    상태가 올바르게 업데이트되지 않는 것 같습니다.

  2. 2

    sklearn 선형 회귀가 올바르게 맞지 않는 것 같습니다.

  3. 3

    Django 서버가 올바르게 시작되지 않는 것은 mysql 문제인 것 같습니다.

  4. 4

    HTML 노드를 가져올 때 PHP appendChild가 올바르게 작동하지 않는 것 같습니다.

  5. 5

    GuestAdditions가 올바르게 설치 (6.0.2)되는 것 같지만 실행되지 않습니다.

  6. 6

    코드가 올바르게 읽히는 것 같지만 실행되지 않습니다.

  7. 7

    Python ANTLR4 예제-파서가 올바르게 구문 분석되지 않는 것 같습니다.

  8. 8

    Java가 테이블의 한쪽면이 올바르게 인쇄되지 않는 것 같습니다.

  9. 9

    파이썬 함수가 올바르게 반복되지 않는 것 같습니다.

  10. 10

    CPU 코어 수가 올바르지 않은 것 같습니다.

  11. 11

    CPU 코어 수가 올바르지 않은 것 같습니다.

  12. 12

    Mechanicalsoup의 StatefulBrowser가 while True 루프에서 올바르게 새로 고쳐지지 않는 것 같습니다.

  13. 13

    AWS Elastic mapreduce가 스트리밍을 jar로 올바르게 변환하지 않는 것 같습니다.

  14. 14

    AWS Elastic mapreduce가 스트리밍을 jar로 올바르게 변환하지 않는 것 같습니다.

  15. 15

    함수 후 jQuery가 테이블에서 올바르게 작동하지 않는 것 같습니다.

  16. 16

    TinyXML2가 내 파일을 올바르게로드하지 않는 것 같습니다.

  17. 17

    세마포가 여러 스레드에서 올바르게 작동하지 않는 것 같습니다.

  18. 18

    computeDistanceBetween이 올바르게 계산되지 않는 것 같습니다.

  19. 19

    Plotnine 테마 element_blank ()가 작동하지 않는 것 같습니다. 아마도 패키지를 올바르게 가져 오지 않았습니까?

  20. 20

    내 클래스가 바인딩이 아닌 API의 JSON 응답으로 올바르게 매핑되지 않는 것 같습니다.

  21. 21

    ATBS Conway의 Game of Life 코드가 올바르지 않은 것 같습니다.

  22. 22

    clang 및 gcc의이 경고가 올바르지 않은 것 같습니다.

  23. 23

    Quicksort 데스크 테스트가 올바르지 않은 것 같습니다.

  24. 24

    Python 용 Pandas를 설치했는데 데이터 프레임 참조가 올바르게 표시되지 않는 것 같습니다.

  25. 25

    redis 카운터를 올바르게 유지할 수없는 것 같습니다.

  26. 26

    magrittr의 복합 파이프 % <> %를 사용하면 올바르게 할당되지 않는 것 같습니다.

  27. 27

    react canvas.scale이 설정되었을 때 올바르게 작동하지 않는 것 같습니다.

  28. 28

    Powershell을 Vim의 셸로 설정 : 명령이 올바르게 전달되지 않는 것 같습니다.

  29. 29

    VM의 cordapp-example이 올바르게 시작되지 않는 것 같습니다.

뜨겁다태그

보관