import torch
import numpy as np
import matplotlib.pyplot as plt
imports
로드맵
-
회귀분석 \(\to\) 로지스틱 \(\to\) 심층신경망(DNN) \(\to\) 합성곱신경망(CNN)
-
강의계획서
ref
-
넘파이 문법이 약하다면? (reshape, concatenate, stack)
- reshape: 아래 링크의 넘파이공부 2단계 reshape 참고
https://guebin.github.io/IP2022/2022/04/06/(6%EC%A3%BC%EC%B0%A8)-4%EC%9B%946%EC%9D%BC.html
- concatenate, stack: 아래 링크의 넘파이공부 4단계 참고
https://guebin.github.io/IP2022/2022/04/11/(6%EC%A3%BC%EC%B0%A8)-4%EC%9B%9411%EC%9D%BC.html
회귀모형 소개
-
model: \(y_i= w_0+w_1 x_i +\epsilon_i = 2.5 + 4x_i +\epsilon_i, \quad i=1,2,\dots,n\)
-
model: \({\bf y}={\bf X}{\bf W} +\boldsymbol{\epsilon}\)
- \({\bf y}=\begin{bmatrix} y_1 \\ y_2 \\ \dots \\ y_n\end{bmatrix}, \quad {\bf X}=\begin{bmatrix} 1 & x_1 \\ 1 & x_2 \\ \dots \\ 1 & x_n\end{bmatrix}, \quad {\bf W}=\begin{bmatrix} 2.5 \\ 4 \end{bmatrix}, \quad \boldsymbol{\epsilon}= \begin{bmatrix} \epsilon_1 \\ \dots \\ \epsilon_n\end{bmatrix}\)
회귀모형에서 데이터 생성
=torch.randn(100).sort() #100개의 난수 생성 .sort()는 정렬된 값 표현 _rnt
type(_rnt) #type해보니까 모르는 거네? lengh를 보면 2니까 리스트를 해볼수 있음!
torch.return_types.sort
= _rnt[0], _rnt[1] #첫번쨰 원소가 a에 들어가고 두번째 원소가 언더바에 들어가게 된다. a,_
= torch.randn(100).sort()
x,_ # X벡터 안에 들어가는 x1, x2, x3 ... x
tensor([-2.6694e+00, -2.6132e+00, -2.2525e+00, -2.0763e+00, -1.9791e+00,
-1.8444e+00, -1.7486e+00, -1.7284e+00, -1.6991e+00, -1.6634e+00,
-1.6364e+00, -1.5948e+00, -1.5710e+00, -1.5043e+00, -1.5002e+00,
-1.4035e+00, -1.3328e+00, -1.3239e+00, -1.2964e+00, -1.2064e+00,
-1.1857e+00, -1.1184e+00, -1.0559e+00, -1.0148e+00, -1.0105e+00,
-9.7771e-01, -9.2156e-01, -8.9929e-01, -8.8333e-01, -7.6213e-01,
-6.8896e-01, -6.2386e-01, -6.0660e-01, -5.9161e-01, -5.7884e-01,
-4.4417e-01, -4.3631e-01, -3.8129e-01, -3.5062e-01, -3.4311e-01,
-3.1632e-01, -2.7753e-01, -2.7065e-01, -2.7020e-01, -2.6189e-01,
-2.2925e-01, -1.4359e-01, -1.2405e-01, -6.8853e-02, -5.1603e-02,
-4.9887e-02, -2.3798e-02, -1.6275e-03, 7.4200e-02, 1.6760e-01,
1.7279e-01, 2.3754e-01, 2.5730e-01, 2.6886e-01, 2.8250e-01,
2.9296e-01, 3.0017e-01, 3.1466e-01, 3.2627e-01, 3.5380e-01,
3.5664e-01, 3.6345e-01, 3.6429e-01, 4.3469e-01, 4.3551e-01,
4.6556e-01, 4.9491e-01, 4.9940e-01, 5.4481e-01, 6.4859e-01,
6.7236e-01, 6.8683e-01, 7.2763e-01, 7.3832e-01, 7.8508e-01,
8.0376e-01, 8.1716e-01, 8.2234e-01, 8.8814e-01, 9.1453e-01,
9.8436e-01, 1.0107e+00, 1.0332e+00, 1.0441e+00, 1.0577e+00,
1.1333e+00, 1.1406e+00, 1.2557e+00, 1.3057e+00, 1.3221e+00,
1.3361e+00, 1.6109e+00, 1.7063e+00, 1.8415e+00, 2.0672e+00])
= torch.ones(100) #torch.ones(100) 1이 100개 들어간거. X벡터만들기 위해서 ones
#stack 쌓는다!!! 근데 우리가 원하는 건 이거의 T (트랜스)를 가지고 싶으니까 벡터T 해주기! torch.stack([ones, x])
tensor([[ 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00,
1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00],
[-2.6694e+00, -2.6132e+00, -2.2525e+00, -2.0763e+00, -1.9791e+00,
-1.8444e+00, -1.7486e+00, -1.7284e+00, -1.6991e+00, -1.6634e+00,
-1.6364e+00, -1.5948e+00, -1.5710e+00, -1.5043e+00, -1.5002e+00,
-1.4035e+00, -1.3328e+00, -1.3239e+00, -1.2964e+00, -1.2064e+00,
-1.1857e+00, -1.1184e+00, -1.0559e+00, -1.0148e+00, -1.0105e+00,
-9.7771e-01, -9.2156e-01, -8.9929e-01, -8.8333e-01, -7.6213e-01,
-6.8896e-01, -6.2386e-01, -6.0660e-01, -5.9161e-01, -5.7884e-01,
-4.4417e-01, -4.3631e-01, -3.8129e-01, -3.5062e-01, -3.4311e-01,
-3.1632e-01, -2.7753e-01, -2.7065e-01, -2.7020e-01, -2.6189e-01,
-2.2925e-01, -1.4359e-01, -1.2405e-01, -6.8853e-02, -5.1603e-02,
-4.9887e-02, -2.3798e-02, -1.6275e-03, 7.4200e-02, 1.6760e-01,
1.7279e-01, 2.3754e-01, 2.5730e-01, 2.6886e-01, 2.8250e-01,
2.9296e-01, 3.0017e-01, 3.1466e-01, 3.2627e-01, 3.5380e-01,
3.5664e-01, 3.6345e-01, 3.6429e-01, 4.3469e-01, 4.3551e-01,
4.6556e-01, 4.9491e-01, 4.9940e-01, 5.4481e-01, 6.4859e-01,
6.7236e-01, 6.8683e-01, 7.2763e-01, 7.3832e-01, 7.8508e-01,
8.0376e-01, 8.1716e-01, 8.2234e-01, 8.8814e-01, 9.1453e-01,
9.8436e-01, 1.0107e+00, 1.0332e+00, 1.0441e+00, 1.0577e+00,
1.1333e+00, 1.1406e+00, 1.2557e+00, 1.3057e+00, 1.3221e+00,
1.3361e+00, 1.6109e+00, 1.7063e+00, 1.8415e+00, 2.0672e+00]])
type(torch.stack([ones, x]))
torch.Tensor
# 역슬래시 하고 입실론 쓰고 탭 누르면 입실론 수학기호생김 신기하군
= torch.tensor([2.5,4])
W
W#원래 shape이 매트릭스여야 하는데 벡터네? 그럼 X@W하면 매트릭스가 아닌 벡터가 된다. ~~~~~~~~~~ 2차원 1차원,,, 훔 W.shape
torch.Size([2])
43052) #이건 원래 난수가 봅히는건뎅 교수님이 설명하기 편하게 ,, 숫자 정해논고
torch.manual_seed(= torch.ones(100) #torch.ones(100) 1이 100개 들어간거. X벡터만들기 위해서
ones= torch.randn(100).sort()
x,_ = torch.stack([ones,x]).T # torch.stack([ones,x],axis=1) T:트랜스포 해주는거. 근데 그렇게 안하고 axis=1해도 된당!
X = torch.tensor([2.5,4])
W = torch.randn(100)*0.5
ϵ = X@W + ϵ y
'o')
plt.plot(x,y,2.5+4*x,'--') #트루펑션 점선으로 찍어보기
plt.plot(x,
#언더라인펑션~= Y=4x+2.5
# w0, w1를 추정하면 언더라인 펑션을 잘 추정했다고 확인 할 수 잇어염
# 파란점은 기본 데이터. 입실론을 뺀거(오차항 뺸거)=TRUU FUNCTION을 찾고 싶어!
회귀모형에서 학습이란?
# x에서 y로가는 맵핑
# 리니어 맵핑,, 2.5랑 4에 가깝게 맞추는거!!
-
파란점만 주어졌을때, 주황색 점선을 추정하는것. 좀 더 정확하게 말하면 given data로 \(\begin{bmatrix} \hat{w}_0 \\ \hat{w}_1 \end{bmatrix}\)를 최대한 \(\begin{bmatrix} 2.5 \\ 4 \end{bmatrix}\)와 비슷하게 찾는것.
given data : \(\big\{(x_i,y_i) \big\}_{i=1}^{n}\)
parameter: \({\bf W}=\begin{bmatrix} w_0 \\ w_1 \end{bmatrix}\)
estimated parameter: \({\bf \hat{W}}=\begin{bmatrix} \hat{w}_0 \\ \hat{w}_1 \end{bmatrix}\)
-
더 쉽게 말하면 아래의 그림을 보고 적당한
추세선을 찾는것이다.
# "적당한" 추세선이 뭐냐? 하면 웱,,
# 숫자로 만드는게 제일 편하다!!
# 적당한게 정도가 있어서 일단 안적당한 거 먼저 해볼게용
'o')
plt.plot(x,y,-5+10*x, '--')
plt.plot(x,
# 원데이터가 y1, y2 되고.. 언더바에 잇는게 y1 hat, y2 hat .....
-
시도: \((\hat{w}_0,\hat{w}_1)=(-5,10)\)을 선택하여 선을 그려보고 적당한지 판단.
- \(\hat{y}_i=-5 +10 x_i\) 와 같이 \(y_i\)의 값을 적합시키겠다는 의미
-
벡터표현으로 주황색점선을 계산
= torch.tensor([-5.0, 10.0])
What What
tensor([-5., 10.])
'o')
plt.plot(x,y,@What,'--')
plt.plot(x,X
# 모델링: 데이터를 보고 아키텍처 설정,,
파라메터를 학습하는 방법 (적당한 선으로 업데이트 하는 방법)
-
이론적으로 추론 <- 회귀분석시간에 배운것
-
컴퓨터의 반복계산을 이용하여 추론 (손실함수도입 + 경사하강법) <- 우리가 오늘 파이토치로 실습해볼 내용.
-
전략: 아래와 같은 3단계 전략을 취한다.
- stage1: 아무 점선이나 그어본다..
- stage2: stage1에서 그은 점선보다 더 좋은 점선으로 바꾼다.
- stage3: stage1 - 2 를 반복한다.
Stage1: 첫번째 점선 – 임의의 선을 일단 그어보자
-
\(\hat{w}_0=-5, \hat{w}_1 = 10\) 으로 설정하고 (왜? 그냥) 임의의 선을 그어보자.
= torch.tensor([-5.0, 10.0], requires_grad=True)
What# 나중에 미분하기 위해서 requires_grad 필요한 옵션
What
# 뒤에 꼬리표가 붙어있음! 따라다녀,,
#텐서플로우 패키지에서 tf.variable이랑 tf. 어ㅓㅉ고 랑 선언하는데 tf.variable로 설정한거
tensor([-5., 10.], requires_grad=True)
+ 1
What # 뒤에 grad_fn 어쩌고가 따라오지만 신경쓰지 않아도 된당 ,, 벡터처럼 계산도 가능해!!
# 꼬리표를 빼고싶을땐......
What.detach() What.data
tensor([-5., 10.])
처음에는 ${}=
\[\begin{bmatrix} \hat{w}_0 \\ \hat{w}_1 \end{bmatrix}\]=
\[\begin{bmatrix} -5 \\ 10 \end{bmatrix}\]$ 를 대입해서 주황색 점선을 적당히 그려보자는 의미
끝에 requires_grad=True는 나중에 미분을 위한 것
그려보자!
Stage2: 첫번째 수정 – 최초의 점선에 대한 ‘적당한 정도’를 판단하고 더 ’적당한’ 점선으로 업데이트 한다.
-
’적당한 정도’를 판단하기 위한 장치: loss function 도입!
\(loss=\sum_{i=1}^{n}(y_i-\hat{y}_i)^2=\sum_{i=1}^{n}(y_i-(\hat{w}_0+\hat{w}_1x_i))^2\)
\(=({\bf y}-{\bf\hat{y}})^\top({\bf y}-{\bf\hat{y}})=({\bf y}-{\bf X}{\bf \hat{W}})^\top({\bf y}-{\bf X}{\bf \hat{W}})\)
-
loss 함수의 특징 - \(y_i \approx \hat{y}_i\) 일수록 loss값이 작다. - \(y_i \approx \hat{y}_i\) 이 되도록 \((\hat{w}_0,\hat{w}_1)\)을 잘 찍으면 loss값이 작다. - (중요) 주황색 점선이 ‘적당할 수록’ loss값이 작다.
# y와 yhat의 값이 비슷하면 loss값이 0에 가까워진다.
=torch.sum((y-X@What)**2) #이 값이 주황색 점선에 대한 loss!!!
loss loss
tensor(8587.6875, grad_fn=<SumBackward0>)
-
우리의 목표: 이 loss(=8587.6875)을 더 줄이자. - 궁극적으로는 아예 모든 조합 \((\hat{w}_0,\hat{w}_1)\)에 대하여 가장 작은 loss를 찾으면 좋겠다. (stage2에서 할일은 아님)
-
문제의 치환: 생각해보니까 우리의 문제는 아래와 같이 수학적으로 단순화 되었다. - 적당해보이는 주황색 선을 찾자 \(\to\) \(loss(w_0,w_1)\)를 최소로하는 \((w_0,w_1)\)의 값을 찾자.
-
수정된 목표: \(loss(w_0,w_1)\)를 최소로 하는 \((w_0,w_1)\)을 구하라. - 단순한 수학문제가 되었다. 마치 \(loss(w)=w^2-2w+3\) 을 최소화하는 \(w\)를 찾으라는 것과 같음. - 즉 “적당한 선으로 업데이트 하라 = 파라메터를 학습 하라 = 손실함수를 최소화 하라”
# 그 function을 minimize하는 정의역의 세트를 찾으면 된다. = 적당한 선으로 업데이트 하라= ...=
-
우리의 무기: 경사하강법, 벡터미분
Stage2를 위한 경사하강법 복습
경사하강법 아이디어 (1차원)
(step 1) 임의의 점을 찍는다.
(step 2) 그 점에서 순간기울기를 구한다. (접선) <– 미분
(step 3) 순간기울기(=미분계수)의 부호를 살펴보고 부호와 반대방향으로 움직인다.
(팁) 기울기의 절대값 크기와 비례하여 보폭(=움직이는 정도)을 조절한다.
# 접선의 기울기가 만약 -4 라는 음수가 나오면 양수값으로 가면 된다..
# 미분계수의 절대값이 작아지는 정도로.. 보폭 조절!!
경사하강법 아이디어 (2차원)
(step 1) 임의의 점을 찍는다.
(step 2) 그 점에서 순간기울기를 구한다. (접평면) <– 편미분
(step 3) 순간기울기(=미분계수)의 부호를 살펴보고 부호와 반대방향으로 각각 움직인다.
(팁) 기울기의 절대값 크기와 비례하여 보폭(=움직이는 정도)을 각각 조절한다.
# 왼쪽으로 갈래? 오른쪽으로 갈래?
# 위로 갈래? 아래로 갈래? ->점에서 한쪽방향을 고정되어있다 생각하고 왼오, 또는 위아래로만 -> 편미분으로 가넝!!
# 2차원, 3차원,, 원리는 결국 1차원과 똑같당!
loss를 줄이도록 \({\bf W}\)를 개선하는 방법
-
$수정값 원래값 - 기울어진크기(=미분계수) $
- 여기에서 \(\alpha\)는 전체적인 보폭의 크기를 결정한다. 즉 \(\alpha\)값이 클수록 한번의 update에 움직이는 양이 크다.
# 반대방향으로 가야하니까 - 를 붙인다.
# a 알파값은 .. 만약 미분계수가 -8이 나왔엉. 근데 그렇다고 8곱해버리면 너무 크니까 0.8 이든 0.08이든.. 그런 알파값을 곱해줘야해!!
# a 값은 양수여야함!!! 음수면 방향이 바꾸기 때문에 a는 정답이 없어. 0.0001 이렇게 걍 맞춰가면 뎀..
-
\({\bf W} \leftarrow {\bf W} - \alpha \times \frac{\partial}{\partial {\bf W}}loss(w_0,w_1)\)
마이너스의 의미: 기울기의 부호를 보고 반대방향으로 움직여라.
\(\frac{\partial}{\partial {\bf W}}loss(w_0,w_1):\) 기울기의 절대값 크기와 비례하여 움직이는 정도를 조정하라.
\(\alpha\)의 의미: 전체적인 보폭의 속도를 조절, \(\alpha\)가 크면 전체적으로 빠르게 움직인다. 다리의 길이로 비유할 수 있다.
loss
tensor(8587.6875, grad_fn=<SumBackward0>)
-
우리의 목표: loss=8587.6875 인데, 이걸 줄이는 것이 목표라고 했었음. 이것을 줄이는 방법이 경사하강법이다.
-
경사하강법으로 loss를 줄이기 위해서는 \(\frac{\partial}{\partial {\bf W}}loss(w_0,w_1)\)의 계산이 필요한데, 이를 위해서 벡터미분이 필요하다. (loss.backward()
로 하면된다)
What.grad
loss.backward()
# 자기 혼자 미분하고 결과값을 안보여죵
# 뭘로 미분하라는거야? ->꼬리표 추적... What까지 가서 얘를 미분하라는 거구나 하고 미분해줌
@What #꼬리표가 있어!!! X
tensor([-29.8211, -28.6215, -24.9730, -21.2394, -19.7919, -19.6354, -19.5093,
-19.4352, -18.7223, -18.0793, -16.9040, -16.0918, -16.0536, -15.8746,
-14.4690, -14.3193, -13.6426, -12.8578, -12.5486, -12.4213, -11.9484,
-11.1034, -10.8296, -10.6210, -10.5064, -10.0578, -9.8063, -9.7380,
-9.7097, -9.6756, -8.8736, -8.7195, -8.6880, -8.1592, -7.7752,
-7.7716, -7.7339, -7.7208, -7.6677, -7.1551, -7.0004, -6.8163,
-6.7081, -6.5655, -6.4480, -6.3612, -6.0566, -5.6031, -5.5589,
-5.2137, -4.3446, -4.3165, -3.8047, -3.5801, -3.4793, -3.4325,
-2.3545, -2.3440, -1.8434, -1.7799, -1.5386, -1.0161, -0.8103,
0.4426, 0.5794, 0.9125, 1.1483, 1.4687, 1.4690, 1.5234,
1.6738, 2.0592, 2.1414, 2.8221, 3.1536, 3.6682, 4.2907,
4.8037, 4.8531, 4.9414, 5.3757, 5.3926, 5.6973, 6.0239,
6.1261, 6.5317, 7.2891, 8.4032, 8.4936, 9.2794, 9.9943,
10.0310, 10.4369, 11.7886, 15.8323, 17.4440, 18.9350, 21.0560,
21.0566, 21.6324], grad_fn=<MvBackward0>)
-X@What #꼬리표가 있는 걸로 파생된 모든 것들은 다 꼬리표가 있땅 y
tensor([21.2791, 22.0448, 19.0234, 16.7600, 15.5403, 16.5028, 15.4853, 15.2491,
15.3820, 15.8766, 14.8778, 13.5299, 14.7183, 13.8280, 14.0026, 12.9680,
11.9954, 12.7489, 12.2415, 11.7914, 11.9046, 11.5198, 11.2462, 10.5267,
10.7726, 10.5168, 10.6967, 10.6377, 10.3411, 11.0601, 9.6820, 9.9789,
9.8090, 10.0825, 8.8370, 9.1268, 9.8500, 8.8644, 9.2922, 8.9190,
8.6027, 8.5628, 7.6912, 8.3478, 8.5596, 9.2232, 8.1731, 7.1257,
8.1160, 8.0498, 7.7402, 6.3844, 6.6187, 7.0653, 7.0851, 6.0290,
5.2399, 6.2613, 5.4961, 5.8827, 5.8510, 4.4186, 4.0283, 4.1260,
3.7978, 3.3949, 3.3412, 3.0141, 3.8481, 3.9753, 3.7895, 3.9736,
3.1428, 2.2318, 2.3002, 2.3654, 1.4343, 0.9550, 1.3489, 1.6579,
1.0864, 1.1214, 0.9873, 1.3258, 1.9648, 0.5476, -0.4224, -0.9803,
-1.2392, -2.0827, -0.4937, -0.9971, -2.9482, -2.7127, -4.7377, -7.1180,
-6.6685, -7.9578, -8.5098, -7.7984], grad_fn=<SubBackward0>)
loss.backward()의 의미: loss를 미분해라! 뭘로?
requires_grad=True
를 가진 텐서로!!
=torch.sum((y-yhat)**2)= torch.sum((y-X@What)**2)
loss# 이었고
=torch.tensor([-5.0,10.0],requires_grad=True)
What# 이므로 결국 What으로 미분하라는 의미.
# 미분한 식이 나오는 것이 아니고,
# 그 식에 (-5.0, 10.0)을 대입한 계수값이 계산됨.
-
위에서 loss.backward()
의 과정은 미분을 활용하여 \((-5,10)\)에서의 순간기울기를 구했다는 의미임.
What.grad
tensor([-1342.2522, 1188.9305])
-
(-5,10)에서 loss의 순간기울기 값은 What.grad
로 확인가능하다.
- 이것이 의미하는건 \((-5,10)\)에서의 \(loss(w_0,w_1)\)의 순간기울기가 \((-1342.2523, 1188.9307)\) 이라는 의미
-
(확인1) loss.backward()
가 미분을 잘 계산해 주는 것이 맞는가? 손계산으로 검증하여 보자.
\(loss(w_0,w_1)=({\bf y}-\hat{\bf y})^\top ({\bf y}-\hat{\bf y})=({\bf y}-{\bf XW})^\top ({\bf y}-{\bf XW})\)
\(\frac{\partial}{\partial {\bf W} }loss(w_0,w_1)=-2{\bf X}^\top {\bf y}+2{\bf X}^\top {\bf X W}\)
- 2 * X.T @ y + 2 * X.T @ X @ What
tensor([-1342.2523, 1188.9305], grad_fn=<AddBackward0>)
-
(확인2) loss.backward()
가 미분을 잘 계산해 주는 것이 맞는가? 편미분을 간단히 구현하여 검증하여 보자.
\(\frac{\partial}{\partial {\bf W} } loss(w_0,w_1)=\begin{bmatrix}\frac{\partial}{\partial w_0} \\ \frac{\partial}{\partial w_1} \end{bmatrix}loss(w_0,w_1) =\begin{bmatrix}\frac{\partial}{\partial w_0}loss(w_0,w_1) \\ \frac{\partial}{\partial w_1}loss(w_0,w_1) \end{bmatrix}\)
\(\frac{\partial}{\partial w_0}loss(w_0,w_1) \approx \frac{loss(w_0+h,w_1)-loss(w_0,w_1)}{h}\)
\(\frac{\partial}{\partial w_1}loss(w_0,w_1) \approx \frac{loss(w_0,w_1+h)-loss(w_0,w_1)}{h}\)
= lambda w0,w1: torch.sum((y-w0-w1*x)**2)
_lossfn -5,10) _lossfn(
tensor(8587.6875)
=0.001
h-5+h,10) - _lossfn(-5,10))/h, (_lossfn(-5,10+h) - _lossfn(-5,10))/h (_lossfn(
(tensor(-1341.7968), tensor(1190.4297))
- 약간 오차가 있지만 얼추비슷 \(\to\) 잘 계산했다는 소리임
-
수정전, 수정하는폭, 수정후의 값은 차례로 아래와 같다.
What.data
tensor([-5., 10.])
str(What.data) #문자열이 됨!
'tensor([-5., 10.])'
=0.001
alphaprint('수정전: ' + str(What.data)) # What 에서 미분꼬리표를 떼고 싶다면? What.data or What.detach()
print('수정하는폭: ' +str(-alpha * What.grad)) #1341*0.001, 1190*0.001
print('수정후: ' +str(What.data-alpha * What.grad))
print('*참값: (2.5,4)' )
수정전: tensor([-5., 10.])
수정하는폭: tensor([ 1.3423, -1.1889])
수정후: tensor([-3.6577, 8.8111])
*참값: (2.5,4)
-
Wbefore, Wafter 계산
= What.data
Wbefore = What.data- alpha * What.grad
Wafter Wbefore, Wafter
(tensor([-5., 10.]), tensor([-3.6577, 8.8111]))
-
Wbefore, Wafter의 시각화
'o')
plt.plot(x,y,@Wbefore,'--') #주황색
plt.plot(x,X@Wafter,'--') #초록색 plt.plot(x,X
Stage3: Learn (=estimate \(\bf\hat{W})\)
-
이 과정은 Stage1,2를 반복하면 된다.
= torch.tensor([-5.0,10.0],requires_grad=True)
What What
tensor([-5., 10.], requires_grad=True)
=0.001
alphafor epoc in range(30): ## 30번 반복합니다!!
=X@What
yhat=torch.sum((y-yhat)**2)
loss#미분.. what.grad로 미분이 된 것을 볼 수 있따->편미분계수값
loss.backward() = What.data-alpha * What.grad #경사하강법~~
What.data =None # 파이토치 특징.. 미분된 grad값에 새 미분값이 안들어가있고.. 이전미분값에 그다음미분값이 더해져서 들어가기 때문에->defalut기 대문에 초기상태로 바꿔줘야햄.... What.grad
What
tensor([2.4290, 4.0144], requires_grad=True)
- 원래 철자는 epoch이 맞아요
-
반복결과는?! (최종적으로 구해지는 What의 값은?!) - 참고로 true
## true인 (2.5,4)와 상당히 비슷함 What.data
tensor([2.4290, 4.0144])
-
반복결과를 시각화하면?
'o')
plt.plot(x,y,@What.data,'--') #그림을 그리기위해서 꼬리표를 떼준당.. plt.plot(x,X
파라메터의 학습과정 음미 (학습과정 모니터링)
학습과정의 기록
-
기록을 해보자.
= [] # 기록하고 싶은것 1 .
loss_history = [] # 기록하고 싶은것 2 yhat이 어떻게 변하는지
yhat_history = [] # 기록하고 싶은것 3 What_history
#loss_history #처음엔 비어있지만.. 값을 점점 넣고 싶어!!!
#loss_history.append(loss)
#loss_history
#loss.item()
#loss_history.append(loss.item())
#loss_history # 텐서를 리스트로 바꿔줘서 넣어주기..
= torch.tensor([-5.0,10.0],requires_grad=True)
What=0.001
alphafor epoc in range(30):
=X@What ; yhat_history.append(yhat.data.tolist()) #세미콜론만 주석처리하면.. 위랑 똑같은 코드..
yhat=torch.sum((y-yhat)**2); loss_history.append(loss.item())
loss
loss.backward() = What.data-alpha * What.grad; What_history.append(What.data.tolist())
What.data =None What.grad
loss_history
[8587.6875,
5675.2109375,
3755.637451171875,
2489.581787109375,
1654.0390625,
1102.3206787109375,
737.8441162109375,
496.96514892578125,
337.7142028808594,
232.39694213867188,
162.72906494140625,
116.63263702392578,
86.1263656616211,
65.93397521972656,
52.566444396972656,
43.71583557128906,
37.855220794677734,
33.974090576171875,
31.403636932373047,
29.701112747192383,
28.57339096069336,
27.826366424560547,
27.331483840942383,
27.003639221191406,
26.78643798828125,
26.642536163330078,
26.547197341918945,
26.48402976989746,
26.442174911499023,
26.414440155029297]
-
\(\hat{y}\) 관찰 (epoch=3, epoch=10, epoch=15)
yhat_history
[[-29.821128845214844,
-28.621461868286133,
-24.97295379638672,
-21.239360809326172,
-19.791915893554688,
-19.635364532470703,
-19.50925064086914,
-19.435216903686523,
-18.722301483154297,
-18.079282760620117,
-16.903972625732422,
-16.09178924560547,
-16.053556442260742,
-15.874590873718262,
-14.468965530395508,
-14.31933879852295,
-13.642648696899414,
-12.857781410217285,
-12.548619270324707,
-12.421306610107422,
-11.94838809967041,
-11.103449821472168,
-10.829590797424316,
-10.621047973632812,
-10.506429672241211,
-10.05777359008789,
-9.80626392364502,
-9.737953186035156,
-9.709654808044434,
-9.67557144165039,
-8.873588562011719,
-8.719473838806152,
-8.687962532043457,
-8.159214973449707,
-7.775153636932373,
-7.771570682525635,
-7.733872890472412,
-7.7207512855529785,
-7.667671203613281,
-7.155084609985352,
-7.000405311584473,
-6.816307067871094,
-6.708141326904297,
-6.565457820892334,
-6.4479804039001465,
-6.361170768737793,
-6.056612968444824,
-5.603134632110596,
-5.558872222900391,
-5.213672637939453,
-4.34455680847168,
-4.3164825439453125,
-3.8046953678131104,
-3.5801002979278564,
-3.479255437850952,
-3.4324843883514404,
-2.3544726371765137,
-2.3440215587615967,
-1.843425989151001,
-1.7798891067504883,
-1.5385699272155762,
-1.016080617904663,
-0.8102789521217346,
0.44257819652557373,
0.5793601274490356,
0.9125399589538574,
1.1482644081115723,
1.468665599822998,
1.468990445137024,
1.5233922004699707,
1.673753261566162,
2.059195041656494,
2.141373634338379,
2.8221492767333984,
3.1536107063293457,
3.6682331562042236,
4.290748119354248,
4.803698539733887,
4.853081226348877,
4.9413557052612305,
5.375688076019287,
5.392560005187988,
5.697267055511475,
6.023870468139648,
6.126120090484619,
6.531744956970215,
7.289087772369385,
8.403202056884766,
8.493597030639648,
9.279403686523438,
9.994264602661133,
10.030980110168457,
10.436870574951172,
11.788615226745605,
15.832330703735352,
17.444000244140625,
18.93501091003418,
21.05604362487793,
21.05657958984375,
21.632400512695312],
[-25.527816772460938,
-24.470781326293945,
-21.25605583190918,
-17.96636199951172,
-16.691007614135742,
-16.553070068359375,
-16.44194793701172,
-16.37671661376953,
-15.748562812805176,
-15.181994438171387,
-14.1464204788208,
-13.430801391601562,
-13.397112846374512,
-13.239425659179688,
-12.000919342041016,
-11.869081497192383,
-11.272846221923828,
-10.581294059753418,
-10.30888843536377,
-10.196712493896484,
-9.780020713806152,
-9.035539627075195,
-8.794240951538086,
-8.610491752624512,
-8.509501457214355,
-8.114187240600586,
-7.892580509185791,
-7.832390785217285,
-7.807457447052002,
-7.777426242828369,
-7.070793151855469,
-6.935001850128174,
-6.907237529754639,
-6.441354274749756,
-6.102954864501953,
-6.09979772567749,
-6.066582202911377,
-6.055020809173584,
-6.008251190185547,
-5.556607723236084,
-5.420318603515625,
-5.258108615875244,
-5.1628031730651855,
-5.037083625793457,
-4.933573246002197,
-4.85708475112915,
-4.588736534118652,
-4.189174175262451,
-4.150174140930176,
-3.8460164070129395,
-3.0802321434020996,
-3.0554959774017334,
-2.6045565605163574,
-2.4066641330718994,
-2.3178091049194336,
-2.2765989303588867,
-1.326755166053772,
-1.3175466060638428,
-0.8764684200286865,
-0.8204857110977173,
-0.6078576445579529,
-0.14748874306678772,
0.03384458273649216,
1.13774573802948,
1.2582652568817139,
1.5518323183059692,
1.759530782699585,
2.0418384075164795,
2.0421247482299805,
2.0900585651397705,
2.2225425243377686,
2.5621581077575684,
2.634566307067871,
3.2344024181365967,
3.5264554023742676,
3.9798927307128906,
4.528395175933838,
4.980359077453613,
5.023870468139648,
5.101649761199951,
5.4843430519104,
5.499208927154541,
5.767688751220703,
6.055461406707764,
6.145554065704346,
6.502953052520752,
7.170252799987793,
8.151906967163086,
8.231554985046387,
8.923933982849121,
9.553803443908691,
9.586153030395508,
9.94378662109375,
11.134817123413086,
14.69776439666748,
16.117816925048828,
17.431556701660156,
19.300413131713867,
19.300886154174805,
19.808244705200195],
[-22.067176818847656,
-21.124095916748047,
-18.25593376159668,
-15.320884704589844,
-14.183019638061523,
-14.059952735900879,
-13.960810661315918,
-13.90261173248291,
-13.34217643737793,
-12.836686134338379,
-11.912752151489258,
-11.274280548095703,
-11.244223594665527,
-11.103535652160645,
-9.998546600341797,
-9.880922317504883,
-9.348963737487793,
-8.731964111328125,
-8.48892593383789,
-8.388842582702637,
-8.017072677612305,
-7.352850437164307,
-7.137564659118652,
-6.9736247062683105,
-6.883521556854248,
-6.530824184417725,
-6.333107948303223,
-6.279407024383545,
-6.257161617279053,
-6.230367660522461,
-5.599913597106934,
-5.478761196136475,
-5.4539899826049805,
-5.038331031799316,
-4.73641300201416,
-4.733596324920654,
-4.703961372375488,
-4.693646430969238,
-4.651918888092041,
-4.248964786529541,
-4.127368450164795,
-3.982645273208618,
-3.8976142406463623,
-3.7854480743408203,
-3.69309663772583,
-3.6248538494110107,
-3.385435104370117,
-3.028947353363037,
-2.9941515922546387,
-2.7227838039398193,
-2.039555072784424,
-2.0174853801727295,
-1.6151596307754517,
-1.438601016998291,
-1.3593250513076782,
-1.3225574493408203,
-0.47511163353919983,
-0.46689584851264954,
-0.07336807250976562,
-0.023420605808496475,
0.16628508269786835,
0.5770238637924194,
0.7388085722923279,
1.7237036228179932,
1.8312305212020874,
2.0931496620178223,
2.2784571647644043,
2.5303306579589844,
2.530586004257202,
2.573352098464966,
2.691553831100464,
2.9945571422576904,
3.059159278869629,
3.594330072402954,
3.854898452758789,
4.259452819824219,
4.748823642730713,
5.152063846588135,
5.190884590148926,
5.260278701782227,
5.601716041564941,
5.614979267120361,
5.854515075683594,
6.111264705657959,
6.191644668579102,
6.510514736175537,
7.1058759689331055,
7.98170280456543,
8.052763938903809,
8.670501708984375,
9.232467651367188,
9.261330604553223,
9.580409049987793,
10.643040657043457,
13.821883201599121,
15.088847160339355,
16.26095962524414,
17.9283447265625,
17.92876625061035,
18.381427764892578],
[-19.276042938232422,
-18.424091339111328,
-15.833085060119629,
-13.181654930114746,
-12.153742790222168,
-12.04256820678711,
-11.953006744384766,
-11.900431632995605,
-11.39415168762207,
-10.937507629394531,
-10.102855682373047,
-9.526080131530762,
-9.49892807006836,
-9.371834754943848,
-8.373621940612793,
-8.267363548278809,
-7.786808967590332,
-7.22943115234375,
-7.009877681732178,
-6.919466018676758,
-6.583621025085449,
-5.983583450317383,
-5.7891011238098145,
-5.641002655029297,
-5.559606552124023,
-5.24099063873291,
-5.062380313873291,
-5.01386833190918,
-4.993772506713867,
-4.969567775726318,
-4.400035381317139,
-4.290590286254883,
-4.26821231842041,
-3.8927195072174072,
-3.619976043701172,
-3.617431640625,
-3.590660333633423,
-3.5813422203063965,
-3.543646812438965,
-3.179630756378174,
-3.069784641265869,
-2.9390463829040527,
-2.862231731414795,
-2.760904550552368,
-2.6774771213531494,
-2.615828514099121,
-2.399545431137085,
-2.077505588531494,
-2.046072244644165,
-1.8009270429611206,
-1.1837197542190552,
-1.1637827157974243,
-0.8003342151641846,
-0.640836775302887,
-0.5692213177680969,
-0.5360066294670105,
0.22954916954040527,
0.23697106540203094,
0.5924716591835022,
0.637592613697052,
0.8089667558670044,
1.1800153255462646,
1.3261665105819702,
2.2158896923065186,
2.313025951385498,
2.549635410308838,
2.717036485671997,
2.944571018218994,
2.9448018074035645,
2.9834353923797607,
3.0902152061462402,
3.363938570022583,
3.4222981929779053,
3.905754804611206,
4.141143798828125,
4.506605625152588,
4.94868803024292,
5.312962532043457,
5.348031520843506,
5.410720348358154,
5.71916389465332,
5.73114538192749,
5.947534561157227,
6.179473876953125,
6.252087116241455,
6.540143966674805,
7.077974796295166,
7.869168758392334,
7.933363437652588,
8.491408348083496,
8.999070167541504,
9.02514362335205,
9.313389778137207,
10.273337364196777,
13.145004272460938,
14.289539337158203,
15.348388671875,
16.854652404785156,
16.855031967163086,
17.263954162597656],
[-17.02360725402832,
-16.244606018066406,
-13.875457763671875,
-11.451059341430664,
-10.511163711547852,
-10.409507751464844,
-10.327615737915039,
-10.279541969299316,
-9.81661319732666,
-9.399069786071777,
-8.635885238647461,
-8.10849666595459,
-8.083669662475586,
-7.967459201812744,
-7.054719924926758,
-6.957560062408447,
-6.518153190612793,
-6.0085015296936035,
-5.807747840881348,
-5.7250776290893555,
-5.417989253997803,
-4.869330883026123,
-4.691501617431641,
-4.556084156036377,
-4.4816575050354,
-4.190323829650879,
-4.02700662612915,
-3.9826488494873047,
-3.964273452758789,
-3.942141532897949,
-3.4213757514953613,
-3.3213019371032715,
-3.3008406162261963,
-2.9574995040893555,
-2.7081100940704346,
-2.7057836055755615,
-2.681304693222046,
-2.6727843284606934,
-2.6383166313171387,
-2.3054697513580322,
-2.205029249191284,
-2.0854856967926025,
-2.0152485370635986,
-1.9225974082946777,
-1.846313714981079,
-1.7899439334869385,
-1.5921801328659058,
-1.2977153062820435,
-1.268973469734192,
-1.0448191165924072,
-0.48046091198921204,
-0.4622310400009155,
-0.12990324199199677,
0.015937041491270065,
0.08142035454511642,
0.11179099977016449,
0.8117952346801758,
0.8185816407203674,
1.1436420679092407,
1.1848994493484497,
1.3415995836257935,
1.680876612663269,
1.8145134449005127,
2.6280529499053955,
2.716871976852417,
2.9332215785980225,
3.0862884521484375,
3.2943403720855713,
3.294551134109497,
3.3298768997192383,
3.427513360977173,
3.6777989864349365,
3.731161594390869,
4.173221588134766,
4.388454914093018,
4.722623825073242,
5.126852512359619,
5.459935665130615,
5.492002010345459,
5.549322605133057,
5.831355094909668,
5.842310905456543,
6.0401716232299805,
6.252251148223877,
6.318646430969238,
6.582037925720215,
7.073816776275635,
7.797264099121094,
7.855961799621582,
8.366223335266113,
8.830416679382324,
8.854257583618164,
9.11782169342041,
9.995573043823242,
12.621350288391113,
13.667882919311523,
14.636066436767578,
16.013355255126953,
16.013702392578125,
16.387609481811523],
[-15.204924583435059,
-14.484371185302734,
-12.292978286743164,
-10.050481796264648,
-9.181105613708496,
-9.087077140808105,
-9.01132869720459,
-8.966862678527832,
-8.538666725158691,
-8.152451515197754,
-7.446528434753418,
-6.958709716796875,
-6.9357452392578125,
-6.828253746032715,
-5.983996868133545,
-5.894127368927002,
-5.487689018249512,
-5.0162763595581055,
-4.830584526062012,
-4.754117012023926,
-4.470069885253906,
-3.9625768661499023,
-3.7980897426605225,
-3.672832727432251,
-3.603990077972412,
-3.33451509475708,
-3.1834518909454346,
-3.1424221992492676,
-3.125425338745117,
-3.1049540042877197,
-2.623260974884033,
-2.530695676803589,
-2.5117695331573486,
-2.1941893100738525,
-1.963511347770691,
-1.9613593816757202,
-1.938717007637024,
-1.9308359622955322,
-1.8989545106887817,
-1.591080904006958,
-1.4981764554977417,
-1.3876020908355713,
-1.3226348161697388,
-1.2369352579116821,
-1.1663750410079956,
-1.1142346858978271,
-0.9313089847564697,
-0.6589377522468567,
-0.6323524117469788,
-0.42501628398895264,
0.09699846059083939,
0.11386056244373322,
0.4212539494037628,
0.5561519265174866,
0.616722047328949,
0.6448140144348145,
1.2922972440719604,
1.298574447631836,
1.5992457866668701,
1.637407660484314,
1.7823506593704224,
2.0961718559265137,
2.2197821140289307,
2.9722821712493896,
3.0544371604919434,
3.254554033279419,
3.396136522293091,
3.588578224182129,
3.588773250579834,
3.621448516845703,
3.711759328842163,
3.9432661533355713,
3.9926249980926514,
4.401517391204834,
4.600602149963379,
4.909698486328125,
5.283597946166992,
5.5916900634765625,
5.621350288391113,
5.674370288848877,
5.935242176055908,
5.945375919342041,
6.128391265869141,
6.324558258056641,
6.385972023010254,
6.62960147857666,
7.084482192993164,
7.753649711608887,
7.807943344116211,
8.27992057800293,
8.709284782409668,
8.731337547302246,
8.975126266479492,
9.787020683288574,
12.215786933898926,
13.183798789978027,
14.079340934753418,
15.353291511535645,
15.353612899780273,
15.69946575164795],
[-13.7357177734375,
-13.06203556060791,
-11.013188362121582,
-8.916561126708984,
-8.103736877441406,
-8.015825271606445,
-7.945003986358643,
-7.903429985046387,
-7.503087520599365,
-7.141994953155518,
-6.481991291046143,
-6.025904178619385,
-6.0044331550598145,
-5.903934001922607,
-5.114594459533691,
-5.0305705070495605,
-4.650570392608643,
-4.209822177886963,
-4.036209583282471,
-3.9647161960601807,
-3.6991453170776367,
-3.2246639728546143,
-3.070876359939575,
-2.9537672996520996,
-2.8894026279449463,
-2.6374564170837402,
-2.4962196350097656,
-2.4578588008880615,
-2.441967725753784,
-2.422827959060669,
-1.9724682569503784,
-1.885924220085144,
-1.8682290315628052,
-1.5713067054748535,
-1.3556339740753174,
-1.3536220788955688,
-1.3324525356292725,
-1.3250840902328491,
-1.2952765226364136,
-1.007429599761963,
-0.9205683469772339,
-0.8171865940093994,
-0.7564453482627869,
-0.6763203740119934,
-0.6103500127792358,
-0.5616012215614319,
-0.39057457447052,
-0.13592055439949036,
-0.11106456071138382,
0.0827847421169281,
0.5708433985710144,
0.5866086483001709,
0.8740066289901733,
1.0001296997070312,
1.0567599534988403,
1.083024501800537,
1.6883901357650757,
1.6942590475082397,
1.975372314453125,
2.011051893234253,
2.146566390991211,
2.439974308013916,
2.5555436611175537,
3.2590951919555664,
3.3359060287475586,
3.523005723953247,
3.655378580093384,
3.8353021144866943,
3.835484743118286,
3.8660342693328857,
3.9504706859588623,
4.1669182777404785,
4.213066577911377,
4.595361232757568,
4.781496047973633,
5.070486068725586,
5.4200639724731445,
5.708115100860596,
5.735846042633057,
5.785417556762695,
6.029320240020752,
6.03879451751709,
6.20990514755249,
6.393311977386475,
6.450730800628662,
6.6785125732421875,
7.103804111480713,
7.729443550109863,
7.780205726623535,
8.221481323242188,
8.622916221618652,
8.643534660339355,
8.871465682983398,
9.630547523498535,
11.901327133178711,
12.806371688842773,
13.643659591674805,
14.834742546081543,
14.835042953491211,
15.158398628234863],
[-12.548260688781738,
-11.912196159362793,
-9.97775650024414,
-7.998204708099365,
-7.230768203735352,
-7.147764682769775,
-7.080898761749268,
-7.0416460037231445,
-6.663658618927002,
-6.322729110717773,
-5.69957971572876,
-5.268960475921631,
-5.248688697814941,
-5.153800964355469,
-4.408538341522217,
-4.3292059898376465,
-3.9704248905181885,
-3.554287910461426,
-3.3903696537017822,
-3.322868585586548,
-3.072127103805542,
-2.624140739440918,
-2.478940725326538,
-2.368370771408081,
-2.307600259780884,
-2.0697226524353027,
-1.9363723993301392,
-1.900153636932373,
-1.8851499557495117,
-1.8670789003372192,
-1.4418671131134033,
-1.360155701637268,
-1.3434486389160156,
-1.0631064176559448,
-0.8594767451286316,
-0.8575771450996399,
-0.8375897407531738,
-0.830632746219635,
-0.8024895787239075,
-0.5307159423828125,
-0.4487050175666809,
-0.35109609365463257,
-0.29374656081199646,
-0.2180957943201065,
-0.1558091938495636,
-0.10978250950574875,
0.051694076508283615,
0.2921282947063446,
0.315596342086792,
0.4986211657524109,
0.959426760673523,
0.9743117094039917,
1.2456614971160889,
1.3647419214248657,
1.4182099103927612,
1.4430078268051147,
2.0145699977874756,
2.020111322402954,
2.285527229309082,
2.319214344024658,
2.447161912918091,
2.7241859436035156,
2.8333020210266113,
3.4975674152374268,
3.570089101791382,
3.74674129486084,
3.871722459793091,
4.041599273681641,
4.041771411895752,
4.070615291595459,
4.150336742401123,
4.354698181152344,
4.398269176483154,
4.759216785430908,
4.934957981109619,
5.207810878753662,
5.537868499755859,
5.809834957122803,
5.836017608642578,
5.8828206062316895,
6.113103866577148,
6.122049331665039,
6.283605098724365,
6.456770420074463,
6.510982990264893,
6.726045608520508,
7.127589225769043,
7.718293190002441,
7.766220569610596,
8.182855606079102,
8.561875343322754,
8.581341743469238,
8.796545028686523,
9.513239860534668,
11.657219886779785,
12.511727333068848,
13.302261352539062,
14.426834106445312,
14.427118301391602,
14.732418060302734],
[-11.588088035583496,
-10.982240676879883,
-9.139697074890137,
-7.254184246063232,
-6.523205280303955,
-6.444145202636719,
-6.380455493927002,
-6.343067646026611,
-5.983036518096924,
-5.658303260803223,
-5.064756870269775,
-4.6545939445495605,
-4.635285377502441,
-4.544905662536621,
-3.8350467681884766,
-3.7594833374023438,
-3.417746067047119,
-3.0213780403137207,
-2.8652467727661133,
-2.800952196121216,
-2.5621225833892822,
-2.1354176998138428,
-1.9971154928207397,
-1.8917983770370483,
-1.8339147567749023,
-1.6073375940322876,
-1.480322241783142,
-1.445824146270752,
-1.4315330982208252,
-1.4143205881118774,
-1.0093086957931519,
-0.9314789175987244,
-0.9155654907226562,
-0.6485410928726196,
-0.4545849859714508,
-0.45277559757232666,
-0.43373769521713257,
-0.4271112382411957,
-0.40030497312545776,
-0.14144207537174225,
-0.0633271187543869,
0.02964484691619873,
0.0842699483036995,
0.15632690489292145,
0.21565455198287964,
0.25949472188949585,
0.4133002758026123,
0.6423125863075256,
0.6646657586097717,
0.8389959335327148,
1.2779107093811035,
1.292088508605957,
1.55054771900177,
1.663971185684204,
1.7148991823196411,
1.7385190725326538,
2.282928943634033,
2.2882070541381836,
2.5410141944885254,
2.573101043701172,
2.6949703693389893,
2.958834171295166,
3.0627667903900146,
3.6954758167266846,
3.764552593231201,
3.9328126907348633,
4.051856517791748,
4.213663101196289,
4.213827133178711,
4.2413010597229,
4.317235469818115,
4.51188850402832,
4.553389549255371,
4.897190093994141,
5.064582347869873,
5.3244733810424805,
5.638851642608643,
5.897898197174072,
5.922836780548096,
5.967416763305664,
6.186760425567627,
6.1952805519104,
6.349161624908447,
6.514101028442383,
6.565738201141357,
6.7705841064453125,
7.153051853179932,
7.715693950653076,
7.761344909667969,
8.158186912536621,
8.519201278686523,
8.537742614746094,
8.74272346496582,
9.425371170043945,
11.467500686645508,
12.281414031982422,
13.034393310546875,
14.10554313659668,
14.105813980102539,
14.396610260009766],
[-10.811363220214844,
-10.229805946350098,
-8.46113395690918,
-6.651216983795166,
-5.949544429779053,
-5.873653888702393,
-5.8125176429748535,
-5.776628494262695,
-5.431032180786133,
-5.11931848526001,
-4.5495686531066895,
-4.155850410461426,
-4.13731575012207,
-4.0505595207214355,
-3.3691604137420654,
-3.296626567840576,
-2.968590497970581,
-2.58811354637146,
-2.438242197036743,
-2.376525402069092,
-2.147270917892456,
-1.7376737594604492,
-1.6049163341522217,
-1.5038214921951294,
-1.448258638381958,
-1.2307655811309814,
-1.1088424921035767,
-1.0757274627685547,
-1.0620094537734985,
-1.0454870462417603,
-0.6567130088806152,
-0.582003653049469,
-0.5667282342910767,
-0.31040942668914795,
-0.12422949820756912,
-0.12249265611171722,
-0.104218028485775,
-0.09785724431276321,
-0.07212571799755096,
0.17635875940322876,
0.25134190917015076,
0.340586394071579,
0.39302143454551697,
0.4621894657611847,
0.519138514995575,
0.5612210631370544,
0.7088601589202881,
0.9286907911300659,
0.950147807598114,
1.1174886226654053,
1.5388063192367554,
1.5524157285690308,
1.800512671470642,
1.909388780593872,
1.9582748413085938,
1.9809478521347046,
2.503530979156494,
2.5085973739624023,
2.7512691020965576,
2.782069444656372,
2.899052858352661,
3.1523375511169434,
3.252103328704834,
3.859445571899414,
3.925752639770508,
4.08726692199707,
4.2015380859375,
4.356857776641846,
4.357015132904053,
4.383387088775635,
4.456276893615723,
4.643126010894775,
4.6829633712768555,
5.012979984283447,
5.173661231994629,
5.423132419586182,
5.7249064445495605,
5.973567485809326,
5.997506141662598,
6.040298938751221,
6.250848293304443,
6.259027004241943,
6.406738758087158,
6.565064907073975,
6.6146321296691895,
6.811265468597412,
7.178399085998535,
7.7184834480285645,
7.762304306030273,
8.14323616027832,
8.489776611328125,
8.507574081420898,
8.704336166381836,
9.359615325927734,
11.319870948791504,
12.101153373718262,
12.823944091796875,
13.852148056030273,
13.852408409118652,
14.131546020507812],
[-10.182785987854004,
-9.620768547058105,
-7.911523342132568,
-6.162417888641357,
-5.484321117401123,
-5.410980701446533,
-5.351898670196533,
-5.317215442657471,
-4.9832305908203125,
-4.681990146636963,
-4.131383895874023,
-3.750894069671631,
-3.7329823970794678,
-3.6491410732269287,
-2.9906365871429443,
-2.9205398559570312,
-2.6035256385803223,
-2.235832691192627,
-2.090996742248535,
-2.03135347366333,
-1.8098018169403076,
-1.4139670133590698,
-1.2856701612472534,
-1.187972068786621,
-1.1342761516571045,
-0.9240906238555908,
-0.8062641024589539,
-0.7742617130279541,
-0.761004626750946,
-0.745037317276001,
-0.3693259060382843,
-0.29712674021720886,
-0.2823645770549774,
-0.03465794026851654,
0.14526645839214325,
0.14694494009017944,
0.1646055430173874,
0.170752614736557,
0.19561956822872162,
0.4357551038265228,
0.5082188844680786,
0.5944647789001465,
0.6451380848884583,
0.7119820713996887,
0.767017662525177,
0.8076862692832947,
0.9503647685050964,
1.1628092527389526,
1.1835453510284424,
1.3452636003494263,
1.752425193786621,
1.7655773162841797,
2.005338430404663,
2.1105563640594482,
2.15779972076416,
2.179711103439331,
2.6847357749938965,
2.689631938934326,
2.924149751663208,
2.9539153575897217,
3.0669682025909424,
3.3117427825927734,
3.408156394958496,
3.9950923919677734,
4.059171676635742,
4.215259075164795,
4.325690746307373,
4.4757914543151855,
4.475943565368652,
4.501429557800293,
4.571870803833008,
4.75244140625,
4.790940284729004,
5.109869003295898,
5.265151023864746,
5.506240367889404,
5.797874927520752,
6.038180828094482,
6.061315536499023,
6.102670192718506,
6.306145191192627,
6.314049243927002,
6.456798076629639,
6.609804630279541,
6.657706260681152,
6.8477325439453125,
7.202530860900879,
7.72446870803833,
7.766817092895508,
8.134949684143066,
8.469846725463867,
8.48704719543457,
8.677197456359863,
9.310460090637207,
11.204852104187012,
11.959882736206055,
12.658388137817383,
13.652046203613281,
13.652297019958496,
13.9220552444458],
[-9.673905372619629,
-9.127617835998535,
-7.466211318969727,
-5.766060829162598,
-5.106943130493164,
-5.0356550216674805,
-4.978226661682129,
-4.944514274597168,
-4.619877338409424,
-4.327067852020264,
-3.791872262954712,
-3.422031879425049,
-3.4046216011047363,
-3.323126792907715,
-2.6830527782440186,
-2.6149179935455322,
-2.306776523590088,
-1.9493745565414429,
-1.808592438697815,
-1.750618577003479,
-1.5352678298950195,
-1.1505117416381836,
-1.0258057117462158,
-0.9308421015739441,
-0.8786489963531494,
-0.6743462681770325,
-0.5598175525665283,
-0.5287108421325684,
-0.5158247947692871,
-0.5003044009208679,
-0.13510854542255402,
-0.06493011862039566,
-0.050581131130456924,
0.1901925802230835,
0.36508116126060486,
0.36671265959739685,
0.3838789761066437,
0.3898540139198303,
0.4140249788761139,
0.6474394798278809,
0.7178751230239868,
0.8017071485519409,
0.8509621620178223,
0.9159352779388428,
0.9694305658340454,
1.0089608430862427,
1.1476460695266724,
1.35414457321167,
1.374300241470337,
1.5314922332763672,
1.927258014678955,
1.9400420188903809,
2.1730926036834717,
2.2753655910491943,
2.321286916732788,
2.3425848484039307,
2.833474636077881,
2.838233709335327,
3.066187858581543,
3.095120429992676,
3.2050089836120605,
3.4429328441619873,
3.5366477966308594,
4.107156276702881,
4.169442176818848,
4.321160793304443,
4.428501605987549,
4.574401378631592,
4.574549674987793,
4.599322319030762,
4.667791366577148,
4.843308448791504,
4.880730152130127,
5.190732002258301,
5.341668128967285,
5.576009750366211,
5.8594818115234375,
6.093061923980713,
6.115549087524414,
6.1557464599609375,
6.353526592254639,
6.361209392547607,
6.49996280670166,
6.64868688583374,
6.695247650146484,
6.879955768585205,
7.224823474884033,
7.732153415679932,
7.773316383361816,
8.131145477294922,
8.456668853759766,
8.473387718200684,
8.65821647644043,
9.273755073547363,
11.11512565612793,
11.849024772644043,
12.527979850769043,
13.493826866149902,
13.494071006774902,
13.756278991699219],
[-9.261781692504883,
-8.728165626525879,
-7.105295658111572,
-5.444580554962158,
-4.800751209259033,
-4.731117248535156,
-4.675020694732666,
-4.642090320587158,
-4.3249831199646,
-4.038965702056885,
-3.516183853149414,
-3.1549222469329834,
-3.13791561126709,
-3.0583112239837646,
-2.433084011077881,
-2.3665294647216797,
-2.065535306930542,
-1.716423511505127,
-1.578906774520874,
-1.5222777128219604,
-1.3119219541549683,
-0.9360904097557068,
-0.8142769932746887,
-0.7215160727500916,
-0.6705335974693298,
-0.4709697663784027,
-0.35909754037857056,
-0.3287123739719391,
-0.3161252439022064,
-0.3009648025035858,
0.0557602196931839,
0.12431085109710693,
0.1383270025253296,
0.37351590394973755,
0.5443479418754578,
0.5459415912628174,
0.5627096891403198,
0.5685461759567261,
0.5921564698219299,
0.8201568722724915,
0.8889586925506592,
0.9708462357521057,
1.0189588069915771,
1.0824248790740967,
1.1346791982650757,
1.173292636871338,
1.3087610006332397,
1.510469675064087,
1.5301578044891357,
1.6837037801742554,
2.0702898502349854,
2.082777261734009,
2.31042218208313,
2.410322904586792,
2.45517897605896,
2.475982904434204,
2.955486536026001,
2.960134983062744,
3.1828017234802246,
3.2110631465911865,
3.3184027671813965,
3.5508079528808594,
3.6423492431640625,
4.199624538421631,
4.260465621948242,
4.408665657043457,
4.513516426086426,
4.656032085418701,
4.656176567077637,
4.680374622344971,
4.747255802154541,
4.918701648712158,
4.955255031585693,
5.258066654205322,
5.405501842498779,
5.6344075202941895,
5.911304473876953,
6.139466762542725,
6.161432266235352,
6.200697422027588,
6.393889904022217,
6.401394367218018,
6.536929130554199,
6.682203769683838,
6.727684497833252,
6.908108234405518,
7.244976997375488,
7.740539073944092,
7.780747413635254,
8.130276679992676,
8.448249816894531,
8.464580535888672,
8.645122528076172,
9.246382713317871,
11.045042991638184,
11.761919021606445,
12.425125122070312,
13.368569374084473,
13.368807792663574,
13.624934196472168],
[-8.927906036376953,
-8.404502868652344,
-6.81269645690918,
-5.1837687492370605,
-4.552262783050537,
-4.483961582183838,
-4.428938865661621,
-4.3966383934021,
-4.085601329803467,
-3.805058479309082,
-3.292283058166504,
-2.9379360675811768,
-2.921255111694336,
-2.8431742191314697,
-2.229914426803589,
-2.1646337509155273,
-1.869400978088379,
-1.5269713401794434,
-1.3920868635177612,
-1.3365416526794434,
-1.1302123069763184,
-0.7615744471549988,
-0.6420926451683044,
-0.5511072278022766,
-0.5011005997657776,
-0.30535656213760376,
-0.1956256479024887,
-0.1658220887184143,
-0.15347588062286377,
-0.13860562443733215,
0.21129140257835388,
0.27852991223335266,
0.2922777831554413,
0.5229650139808655,
0.6905271410942078,
0.6920903325080872,
0.7085375189781189,
0.7142622470855713,
0.7374206185340881,
0.9610569477081299,
1.0285418033599854,
1.108862042427063,
1.1560535430908203,
1.2183048725128174,
1.2695591449737549,
1.3074333667755127,
1.4403088092803955,
1.6381566524505615,
1.6574679613113403,
1.8080748319625854,
2.1872613430023193,
2.199509859085083,
2.422797203063965,
2.5207858085632324,
2.5647833347320557,
2.5851891040802,
3.0555145740509033,
3.0600743293762207,
3.2784790992736816,
3.306199550628662,
3.411484479904175,
3.6394412517547607,
3.7292304039001465,
4.275839328765869,
4.335515975952148,
4.480878829956055,
4.583723068237305,
4.7235107421875,
4.723652362823486,
4.747387409210205,
4.81298828125,
4.981152534484863,
5.0170063972473145,
5.314021587371826,
5.458634853363037,
5.683159351348877,
5.954756259918213,
6.178551197052002,
6.200096130371094,
6.238609790802002,
6.428104400634766,
6.435465335845947,
6.568406105041504,
6.710899829864502,
6.755510330200195,
6.932480335235596,
7.262901306152344,
7.7489776611328125,
7.788416385650635,
8.131255149841309,
8.44314193725586,
8.459160804748535,
8.636246681213379,
9.225998878479004,
10.990230560302734,
11.693385124206543,
12.343897819519043,
13.269283294677734,
13.269516944885254,
13.520740509033203],
[-8.657336235046387,
-8.142171859741211,
-6.575418949127197,
-4.972128868103027,
-4.35056209564209,
-4.2833356857299805,
-4.2291789054870605,
-4.197387218475342,
-3.8912453651428223,
-3.6151180267333984,
-3.110413074493408,
-2.761643409729004,
-2.745224714279175,
-2.668372869491577,
-2.064765214920044,
-2.000511884689331,
-1.709925889968872,
-1.372885823249817,
-1.240124225616455,
-1.1854532957077026,
-0.9823713898658752,
-0.6195355653762817,
-0.5019342303276062,
-0.4123808741569519,
-0.3631612956523895,
-0.1704980731010437,
-0.06249423325061798,
-0.033159755170345306,
-0.021007858216762543,
-0.006371652241796255,
0.3380183279514313,
0.4041985869407654,
0.41773006319999695,
0.6447864770889282,
0.8097113966941833,
0.8112499117851257,
0.827438235282898,
0.83307284116745,
0.8558667898178101,
1.0759832859039307,
1.1424059867858887,
1.2214620113372803,
1.2679108381271362,
1.3291823863983154,
1.3796298503875732,
1.4169081449508667,
1.5476921796798706,
1.7424260377883911,
1.7614333629608154,
1.9096699953079224,
2.282888412475586,
2.2949440479278564,
2.5147171020507812,
2.61116361618042,
2.654468536376953,
2.674553155899048,
3.1374762058258057,
3.1419641971588135,
3.356931447982788,
3.3842155933380127,
3.4878435134887695,
3.712212324142456,
3.800588369369507,
4.33859395980835,
4.397331237792969,
4.540406227111816,
4.641631603240967,
4.779219627380371,
4.779358863830566,
4.802720546722412,
4.867288589477539,
5.032806396484375,
5.068095684051514,
5.36043643951416,
5.502773761749268,
5.723764419555664,
5.991086483001709,
6.211359024047852,
6.232564926147461,
6.270472049713135,
6.456984519958496,
6.464229583740234,
6.595077991485596,
6.7353291511535645,
6.779237270355225,
6.9534220695495605,
7.278642177581787,
7.757068634033203,
7.795886516571045,
8.133329391479492,
8.4403076171875,
8.456073760986328,
8.630373001098633,
9.21084213256836,
10.947306632995605,
11.639394760131836,
12.279668807983398,
13.190489768981934,
13.190719604492188,
13.437989234924316],
[-8.438004493713379,
-7.929488182067871,
-6.38295316696167,
-4.800353050231934,
-4.186807155609131,
-4.120448589324951,
-4.066990852355957,
-4.035609245300293,
-3.7334179878234863,
-3.4608538150787354,
-2.9626619815826416,
-2.6183929443359375,
-2.602186441421509,
-2.5263261795043945,
-1.930507779121399,
-1.8670837879180908,
-1.5802475214004517,
-1.2475568056106567,
-1.1165084838867188,
-1.0625430345535278,
-0.8620818257331848,
-0.5039282441139221,
-0.3878445327281952,
-0.29944679141044617,
-0.25086236000061035,
-0.06068538501858711,
0.04592471569776535,
0.07488065212965012,
0.08687572926282883,
0.10132306069135666,
0.44126883149147034,
0.5065950751304626,
0.5199519395828247,
0.7440782785415649,
0.9068748950958252,
0.9083935618400574,
0.9243730306625366,
0.9299349188804626,
0.9524346590042114,
1.169710636138916,
1.235276222229004,
1.31331205368042,
1.3591614961624146,
1.4196423292160034,
1.469438910484314,
1.506235957145691,
1.6353323459625244,
1.8275532722473145,
1.8463153839111328,
1.9926389455795288,
2.3610410690307617,
2.372941255569458,
2.5898783206939697,
2.685080051422119,
2.7278263568878174,
2.7476518154144287,
3.2046008110046387,
3.209030866622925,
3.4212241172790527,
3.4481561183929443,
3.5504469871520996,
3.7719204425811768,
3.8591558933258057,
4.390218734741211,
4.448198318481445,
4.5894269943237305,
4.6893463134765625,
4.82515811920166,
4.825295925140381,
4.848355770111084,
4.912091255187988,
5.075472831726074,
5.110306739807129,
5.398874759674072,
5.539375305175781,
5.757513999938965,
6.021386623382568,
6.238816738128662,
6.259748935699463,
6.29716682434082,
6.4812726974487305,
6.488424301147461,
6.617583751678467,
6.756025314331055,
6.799366474151611,
6.971303462982178,
7.292326927185059,
7.764579772949219,
7.802896499633789,
8.135985374450684,
8.439001083374023,
8.454564094543457,
8.62661361694336,
9.199593544006348,
10.913649559020996,
11.596805572509766,
12.2288179397583,
13.127883911132812,
13.128111839294434,
13.372190475463867],
[-8.260159492492676,
-7.757010459899902,
-6.226800441741943,
-4.660905838012695,
-4.053836822509766,
-3.988178253173828,
-3.9352846145629883,
-3.9042344093322754,
-3.6052331924438477,
-3.3355460166931152,
-2.8426129817962646,
-2.5019781589508057,
-2.4859423637390137,
-2.4108831882476807,
-1.8213540315628052,
-1.7585995197296143,
-1.4747910499572754,
-1.145612120628357,
-1.0159471035003662,
-0.9625513553619385,
-0.7642061114311218,
-0.4098331332206726,
-0.29497477412223816,
-0.20751014351844788,
-0.1594385802745819,
0.028730938211083412,
0.13421568274497986,
0.16286596655845642,
0.174734428524971,
0.189029261469841,
0.5253866314888,
0.5900232791900635,
0.6032391786575317,
0.8249996900558472,
0.9860778450965881,
0.9875805377960205,
1.0033912658691406,
1.008894443511963,
1.0311566591262817,
1.2461391687393188,
1.3110127449035645,
1.388224720954895,
1.4335901737213135,
1.493432641029358,
1.5427035093307495,
1.5791122913360596,
1.7068458795547485,
1.8970377445220947,
1.9156018495559692,
2.0603809356689453,
2.424894332885742,
2.436668634414673,
2.651315927505493,
2.7455127239227295,
2.7878077030181885,
2.8074238300323486,
3.259549617767334,
3.263932704925537,
3.473886013031006,
3.5005338191986084,
3.6017448902130127,
3.820880651473999,
3.9071953296661377,
4.432652473449707,
4.490019798278809,
4.629757404327393,
4.728621959686279,
4.863000392913818,
4.8631367683410645,
4.885953426361084,
4.9490156173706055,
5.110672950744629,
5.145139217376709,
5.430661201477051,
5.56967830657959,
5.785514831542969,
6.04660177230835,
6.261736869812012,
6.2824482917785645,
6.31947135925293,
6.501633167266846,
6.50870943069458,
6.636505603790283,
6.7734856605529785,
6.816370010375977,
6.986491680145264,
7.304126739501953,
7.7713942527771,
7.809306621551514,
8.13887882232666,
8.43869686126709,
8.454095840454102,
8.62432861328125,
9.19126033782959,
10.887223243713379,
11.5631685256958,
12.188508033752441,
13.078084945678711,
13.078310012817383,
13.319812774658203],
[-8.115914344787598,
-7.617101669311523,
-6.1000800132751465,
-4.547680854797363,
-3.9458436965942383,
-3.880751132965088,
-3.8283135890960693,
-3.7975308895111084,
-3.5011065006256104,
-3.233743667602539,
-2.745059013366699,
-2.4073598384857178,
-2.3914623260498047,
-2.317049980163574,
-1.7326017618179321,
-1.670388102531433,
-1.3890256881713867,
-1.0626837015151978,
-0.9341362714767456,
-0.8812006711959839,
-0.6845648884773254,
-0.3332460820674896,
-0.21937762200832367,
-0.13266681134700775,
-0.08500954508781433,
0.10153822600841522,
0.20611386001110077,
0.23451721668243408,
0.2462833821773529,
0.26045501232147217,
0.5939134955406189,
0.6579930782318115,
0.671095073223114,
0.8909443616867065,
1.0506342649459839,
1.0521239042282104,
1.067798376083374,
1.0732542276382446,
1.0953246355056763,
1.3084542751312256,
1.3727686405181885,
1.4493151903152466,
1.494289755821228,
1.5536164045333862,
1.602462649345398,
1.6385575532913208,
1.7651903629302979,
1.9537429809570312,
1.9721471071243286,
2.115678310394287,
2.4770500659942627,
2.4887232780456543,
2.7015204429626465,
2.794905424118042,
2.8368358612060547,
2.856282949447632,
3.3045120239257812,
3.3088574409484863,
3.5170013904571533,
3.543419361114502,
3.6437580585479736,
3.8610050678253174,
3.946575880050659,
4.467504501342773,
4.524377346038818,
4.6629109382629395,
4.760923385620117,
4.894143581390381,
4.894278526306152,
4.916898727416992,
4.97941780090332,
5.139681339263916,
5.1738505363464355,
5.456912040710449,
5.594730854034424,
5.808707237243652,
6.067543983459473,
6.280825138092041,
6.301357746124268,
6.338061809539795,
6.518653869628906,
6.525669097900391,
6.6523637771606445,
6.788163185119629,
6.830677509307861,
6.999333381652832,
7.314230918884277,
7.77747106552124,
7.815056800842285,
8.141789436340332,
8.4390230178833,
8.454288482666016,
8.623055458068848,
9.185099601745605,
10.866446495056152,
11.536565780639648,
12.156517028808594,
13.038426399230957,
13.038649559020996,
13.278070449829102],
[-7.998893737792969,
-7.5035858154296875,
-5.997223377227783,
-4.4557318687438965,
-3.858123540878296,
-3.7934882640838623,
-3.7414190769195557,
-3.71085262298584,
-3.416511058807373,
-3.151026964187622,
-2.665776014328003,
-2.3304495811462402,
-2.314663887023926,
-2.240774154663086,
-1.6604324579238892,
-1.5986559391021729,
-1.319270372390747,
-0.9952215552330017,
-0.8675772547721863,
-0.815013587474823,
-0.6197594404220581,
-0.2709091007709503,
-0.15784072875976562,
-0.07173916697502136,
-0.024416757747530937,
0.16082027554512024,
0.26466113328933716,
0.29286491870880127,
0.3045484125614166,
0.3186204731464386,
0.6497359871864319,
0.7133653163909912,
0.7263752222061157,
0.9446797966957092,
1.1032476425170898,
1.1047269105911255,
1.1202912330627441,
1.1257086992263794,
1.1476240158081055,
1.3592561483383179,
1.4231185913085938,
1.4991273880004883,
1.5437859296798706,
1.6026957035064697,
1.6511987447738647,
1.687040090560913,
1.8127830028533936,
2.0000109672546387,
2.0182857513427734,
2.1608083248138428,
2.519641160964966,
2.5312321186065674,
2.7425341606140137,
2.8352630138397217,
2.876898765563965,
2.896209239959717,
3.3412890434265137,
3.3456039428710938,
3.5522851943969727,
3.5785176753997803,
3.6781513690948486,
3.893872022628784,
3.978841543197632,
4.496109962463379,
4.55258321762085,
4.69014310836792,
4.787467002868652,
4.9197516441345215,
4.919885635375977,
4.942346572875977,
5.004426002502441,
5.1635637283325195,
5.197493076324463,
5.478565692901611,
5.615416049957275,
5.8278889656066895,
6.084907054901123,
6.296689510345459,
6.317078113555908,
6.353524208068848,
6.5328474044799805,
6.539813041687012,
6.665617942810059,
6.8004631996154785,
6.842678546905518,
7.0101494789123535,
7.322834491729736,
7.782819747924805,
7.820141315460205,
8.144577980041504,
8.439723014831543,
8.45488166809082,
8.622462272644043,
9.180558204650879,
10.850090980529785,
11.515501976013184,
12.131096839904785,
13.00680923461914,
13.007031440734863,
13.244770050048828],
[-7.903938293457031,
-7.411464214324951,
-5.913720607757568,
-4.381049156188965,
-3.7868597507476807,
-3.7225944995880127,
-3.670823335647583,
-3.6404316425323486,
-3.3477742671966553,
-3.0838091373443604,
-2.601334571838379,
-2.2679266929626465,
-2.2522313594818115,
-2.178764581680298,
-1.601743221282959,
-1.5403201580047607,
-1.262533187866211,
-0.9403384327888489,
-0.8134244680404663,
-0.7611615657806396,
-0.5670245885848999,
-0.22017022967338562,
-0.10774879902601242,
-0.022139888256788254,
0.02491176314651966,
0.20908893644809723,
0.31233564019203186,
0.3403780460357666,
0.35199472308158875,
0.36598625779151917,
0.6952072381973267,
0.7584725022315979,
0.771407961845398,
0.9884634613990784,
1.1461241245269775,
1.1475948095321655,
1.1630702018737793,
1.1684565544128418,
1.1902464628219604,
1.4006677865982056,
1.4641648530960083,
1.5397387742996216,
1.584141731262207,
1.642714500427246,
1.690940022468567,
1.7265762090682983,
1.8515998125076294,
2.0377564430236816,
2.055926561355591,
2.197633981704712,
2.5544135570526123,
2.5659382343292236,
2.776031255722046,
2.868229389190674,
2.9096271991729736,
2.9288270473480225,
3.3713600635528564,
3.375650405883789,
3.581149101257324,
3.607231616973877,
3.7062952518463135,
3.9207816123962402,
4.005264759063721,
4.51957368850708,
4.575723648071289,
4.712496757507324,
4.809263706207275,
4.940791130065918,
4.940924644470215,
4.9632568359375,
5.024981498718262,
5.183208465576172,
5.216943740844727,
5.496407985687256,
5.632475852966309,
5.8437323570251465,
6.09928035736084,
6.309850692749023,
6.330122947692871,
6.366360187530518,
6.544657230377197,
6.551583290100098,
6.676668167114258,
6.810741901397705,
6.852716445922852,
7.019228935241699,
7.330124378204346,
7.787477970123291,
7.824585914611816,
8.14716625213623,
8.44062328338623,
8.455695152282715,
8.622316360473633,
9.17721939086914,
10.837199211120605,
11.49880313873291,
12.110876083374023,
12.98157787322998,
12.98179817199707,
13.21817684173584],
[-7.826869964599609,
-7.336688995361328,
-5.845917224884033,
-4.320380687713623,
-3.728957414627075,
-3.6649913787841797,
-3.6134610176086426,
-3.5832109451293945,
-3.2919158935546875,
-3.029179573059082,
-2.5489509105682373,
-2.217095136642456,
-2.201472759246826,
-2.1283481121063232,
-1.5540128946304321,
-1.4928756952285767,
-1.2163819074630737,
-0.8956869840621948,
-0.7693638205528259,
-0.7173442244529724,
-0.5241109728813171,
-0.1788712739944458,
-0.06697317957878113,
0.01823720894753933,
0.06506982445716858,
0.24838963150978088,
0.35115569829940796,
0.3790675699710846,
0.39063015580177307,
0.4045565724372864,
0.7322449684143066,
0.7952157258987427,
0.8080909848213196,
1.0241360664367676,
1.1810626983642578,
1.182526707649231,
1.1979299783706665,
1.2032912969589233,
1.2249797582626343,
1.434421420097351,
1.4976229667663574,
1.5728451013565063,
1.6170413494110107,
1.6753414869308472,
1.7233424186706543,
1.7588127851486206,
1.8832542896270752,
2.068544387817383,
2.08663010597229,
2.227677583694458,
2.582796335220337,
2.5942673683166504,
2.803382396697998,
2.8951516151428223,
2.936356544494629,
2.9554669857025146,
3.395940065383911,
3.400210380554199,
3.604752540588379,
3.63071346282959,
3.729315996170044,
3.9428038597106934,
4.0268940925598145,
4.538808345794678,
4.594696998596191,
4.730833530426025,
4.827149868011475,
4.958065032958984,
4.958198070526123,
4.98042631149292,
5.041863441467285,
5.19935417175293,
5.232932090759277,
5.5110955238342285,
5.646529674530029,
5.8568034172058105,
6.111161231994629,
6.320751667022705,
6.34092903137207,
6.376997947692871,
6.554465293884277,
6.56135892868042,
6.685861587524414,
6.819311141967773,
6.861090183258057,
7.026827335357666,
7.336275577545166,
7.791500091552734,
7.82843542098999,
8.149514198303223,
8.441604614257812,
8.4566068649292,
8.622452735900879,
9.174772262573242,
10.827024459838867,
11.485548973083496,
12.094772338867188,
12.961421012878418,
12.961640357971191,
13.196918487548828],
[-7.764307975769043,
-7.27598237991333,
-5.790853023529053,
-4.271090030670166,
-3.681905508041382,
-3.6181814670562744,
-3.5668461322784424,
-3.536710739135742,
-3.246518135070801,
-2.984776258468628,
-2.5063650608062744,
-2.1757652759552,
-2.1602022647857666,
-2.0873541831970215,
-1.5151927471160889,
-1.4542869329452515,
-1.1788396835327148,
-0.8593584895133972,
-0.7335134744644165,
-0.6816907525062561,
-0.4891888499259949,
-0.14525583386421204,
-0.033781249076128006,
0.051106635481119156,
0.09776199609041214,
0.2803879678249359,
0.3827650845050812,
0.41057130694389343,
0.4220901429653168,
0.43596383929252625,
0.7624120116233826,
0.8251444101333618,
0.8379709720611572,
1.0531983375549316,
1.2095310688018799,
1.2109894752502441,
1.2263344526290894,
1.2316755056381226,
1.253281831741333,
1.4619308710098267,
1.5248931646347046,
1.5998305082321167,
1.6438595056533813,
1.7019389867782593,
1.7497583627700806,
1.7850943803787231,
1.9090650081634521,
2.093653678894043,
2.111670970916748,
2.2521846294403076,
2.605959415435791,
2.617387056350708,
2.8257105350494385,
2.9171321392059326,
2.958181142807007,
2.977219343185425,
3.416025400161743,
3.4202795028686523,
3.6240475177764893,
3.6499102115631104,
3.7481393814086914,
3.9608192443847656,
4.044590950012207,
4.554568290710449,
4.610245227813721,
4.745866775512695,
4.841818332672119,
4.972238063812256,
4.972370147705078,
4.994514465332031,
5.055719375610352,
5.212613582611084,
5.24606466293335,
5.523175239562988,
5.658096790313721,
5.867574691772461,
6.120970249176025,
6.329767227172852,
6.349868297576904,
6.385800361633301,
6.562595844268799,
6.569463729858398,
6.693495273590088,
6.826439380645752,
6.868060111999512,
7.033170223236084,
7.341447353363037,
7.794949054718018,
7.83174467086792,
8.151607513427734,
8.44259262084961,
8.457537651062012,
8.622756004333496,
9.172985076904297,
10.818984031677246,
11.475016593933105,
12.081933975219727,
12.945302963256836,
12.945521354675293,
13.179908752441406],
[-7.713510990142822,
-7.226686954498291,
-5.746126174926758,
-4.231037616729736,
-3.643665313720703,
-3.580137252807617,
-3.5289597511291504,
-3.4989171028137207,
-3.2096168994903564,
-2.9486801624298096,
-2.47174072265625,
-2.142157793045044,
-2.1266424655914307,
-2.054018497467041,
-1.4836169481277466,
-1.422898530960083,
-1.1482985019683838,
-0.829800009727478,
-0.7043420076370239,
-0.6526787281036377,
-0.4607689380645752,
-0.11789380013942719,
-0.006762102246284485,
0.07786467671394348,
0.12437653541564941,
0.3064407706260681,
0.408502995967865,
0.43622371554374695,
0.44770708680152893,
0.4615381062030792,
0.7869821786880493,
0.8495216369628906,
0.8623087406158447,
1.0768741369247437,
1.232725977897644,
1.2341798543930054,
1.2494776248931885,
1.2548022270202637,
1.2763421535491943,
1.4843493700027466,
1.547118067741394,
1.6218249797821045,
1.6657185554504395,
1.7236193418502808,
1.7712914943695068,
1.8065189123153687,
1.9301081895828247,
2.1141293048858643,
2.1320908069610596,
2.272172451019287,
2.624859094619751,
2.636251449584961,
2.8439342975616455,
2.935074806213379,
2.9759974479675293,
2.9949772357940674,
3.4324333667755127,
3.4366743564605713,
3.63981556892395,
3.6655988693237305,
3.76352596282959,
3.9755516052246094,
4.059065818786621,
4.567473888397217,
4.622980117797852,
4.75818395614624,
4.8538408279418945,
4.983859539031982,
4.9839911460876465,
5.006067276000977,
5.067083835601807,
5.223495960235596,
5.2568440437316895,
5.533102035522461,
5.667608737945557,
5.876441955566406,
6.129057884216309,
6.337213039398193,
6.35725212097168,
6.393074035644531,
6.5693254470825195,
6.576172351837158,
6.699821949005127,
6.832357406616211,
6.873850345611572,
7.038452625274658,
7.345781326293945,
7.797888278961182,
7.834570407867432,
8.153450012207031,
8.4435396194458,
8.458438873291016,
8.623148918151855,
9.171685218811035,
10.8126220703125,
11.466635704040527,
12.071686744689941,
12.93239974975586,
12.932618141174316,
13.166284561157227],
[-7.672260761260986,
-7.186653137207031,
-5.709791660308838,
-4.198488712310791,
-3.612584114074707,
-3.5492148399353027,
-3.4981651306152344,
-3.4681975841522217,
-3.1796202659606934,
-2.91933536529541,
-2.4435875415802,
-2.11482834815979,
-2.099351644515991,
-2.026909112930298,
-1.457932949066162,
-1.3973662853240967,
-1.1234523057937622,
-0.8057495951652527,
-0.6806051135063171,
-0.6290708780288696,
-0.43764063715934753,
-0.0956222265958786,
0.015231793746352196,
0.09964711964130402,
0.14604276418685913,
0.32765209674835205,
0.4294593036174774,
0.457110732793808,
0.468565434217453,
0.48236188292503357,
0.806992769241333,
0.869376003742218,
0.8821310997009277,
1.0961604118347168,
1.2516227960586548,
1.2530730962753296,
1.268332600593567,
1.273643970489502,
1.2951301336288452,
1.502617597579956,
1.5652294158935547,
1.639749526977539,
1.6835334300994873,
1.7412896156311035,
1.7888426780700684,
1.8239821195602417,
1.9472625255584717,
2.130823850631714,
2.148740530014038,
2.2884721755981445,
2.64027738571167,
2.651641368865967,
2.8588054180145264,
2.9497179985046387,
2.9905385971069336,
3.0094707012176514,
3.445833921432495,
3.4500644207000732,
3.652698040008545,
3.6784167289733887,
3.77609920501709,
3.9875950813293457,
4.0709004402160645,
4.578038692474365,
4.633405685424805,
4.768272399902344,
4.86368989944458,
4.993383407592773,
4.9935150146484375,
5.015536308288574,
5.076399803161621,
5.232420921325684,
5.26568603515625,
5.541253566741943,
5.675424575805664,
5.883735656738281,
6.135720729827881,
6.343355655670166,
6.363344669342041,
6.39907693862915,
6.574888229370117,
6.581717491149902,
6.705058574676514,
6.837263107299805,
6.878652095794678,
7.042842864990234,
7.3494038581848145,
7.800381183624268,
7.836971759796143,
8.155054092407227,
8.444419860839844,
8.459280967712402,
8.623579978942871,
9.170745849609375,
10.807581901550293,
11.459961891174316,
12.06350040435791,
12.922063827514648,
12.922280311584473,
13.155364036560059],
[-7.63875675201416,
-7.154134273529053,
-5.680269718170166,
-4.17203426361084,
-3.5873184204101562,
-3.5240776538848877,
-3.4731316566467285,
-3.4432246685028076,
-3.155233144760132,
-2.8954765796661377,
-2.420694351196289,
-2.092602014541626,
-2.0771567821502686,
-2.004861354827881,
-1.4370397329330444,
-1.3765959739685059,
-1.1032378673553467,
-0.7861799001693726,
-0.661289393901825,
-0.6098597645759583,
-0.41881799697875977,
-0.07749363034963608,
0.03313542529940605,
0.11737944930791855,
0.16368094086647034,
0.34492170810699463,
0.4465223252773285,
0.474117636680603,
0.48554909229278564,
0.49931755661964417,
0.8232896327972412,
0.8855462670326233,
0.8982754945755005,
1.1118704080581665,
1.2670173645019531,
1.2684646844863892,
1.2836933135986328,
1.2889938354492188,
1.3104363679885864,
1.517502784729004,
1.5799875259399414,
1.6543564796447754,
1.6980515718460083,
1.7556904554367065,
1.8031470775604248,
1.8382152318954468,
1.9612454175949097,
2.1444342136383057,
2.1623146533966064,
2.301762580871582,
2.6528539657592773,
2.6641948223114014,
2.870938301086426,
2.9616665840148926,
3.00240421295166,
3.0212981700897217,
3.456775665283203,
3.4609975814819336,
3.663220167160034,
3.6888866424560547,
3.7863707542419434,
3.9974374771118164,
4.080574035644531,
4.5866827964782715,
4.641937732696533,
4.7765302658081055,
4.871754169464111,
5.001184940338135,
5.001316070556641,
5.023292541503906,
5.084033012390137,
5.239737510681152,
5.272934436798096,
5.547943115234375,
5.6818413734436035,
5.889730453491211,
6.141203880310059,
6.348417282104492,
6.36836576461792,
6.404025554656982,
6.579480171203613,
6.5862956047058105,
6.709386348724365,
6.841322422027588,
6.882627487182617,
7.046485424041748,
7.352424144744873,
7.802485942840576,
7.83900260925293,
8.156439781188965,
8.44521713256836,
8.460049629211426,
8.624013900756836,
9.170069694519043,
10.803584098815918,
11.45464038848877,
12.056954383850098,
12.913774490356445,
12.913991928100586,
13.146601676940918],
[-7.611539840698242,
-7.127716064453125,
-5.656280517578125,
-4.1505303382873535,
-3.5667781829833984,
-3.5036416053771973,
-3.452779769897461,
-3.422921895980835,
-3.1354050636291504,
-2.8760764598846436,
-2.402076482772827,
-2.0745251178741455,
-2.059105396270752,
-1.986928939819336,
-1.4200431108474731,
-1.3596988916397095,
-1.0867912769317627,
-0.7702558040618896,
-0.6455711126327515,
-0.5942262411117554,
-0.4034992754459381,
-0.06273742020130157,
0.047709330916404724,
0.13181452453136444,
0.17803971469402313,
0.35898181796073914,
0.46041497588157654,
0.48796483874320984,
0.49937742948532104,
0.5131232142448425,
0.8365614414215088,
0.8987154364585876,
0.9114237427711487,
1.1246665716171265,
1.2795579433441162,
1.2810028791427612,
1.2962063550949097,
1.3014981746673584,
1.3229053020477295,
1.5296305418014526,
1.5920122861862183,
1.666258692741394,
1.7098817825317383,
1.7674256563186646,
1.8148040771484375,
1.8498144149780273,
1.972641944885254,
2.1555287837982178,
2.17337965965271,
2.3125979900360107,
2.6631107330322266,
2.6744329929351807,
2.880835771560669,
2.971414566040039,
3.0120849609375,
3.030947685241699,
3.465707778930664,
3.4699225425720215,
3.671811819076538,
3.6974360942840576,
3.794759511947632,
4.005478382110596,
4.088478088378906,
4.593752861022949,
4.648916721343994,
4.783287048339844,
4.878354549407959,
5.007571697235107,
5.007702827453613,
5.029642581939697,
5.090282917022705,
5.245730876922607,
5.278873443603516,
5.553429126739502,
5.687106609344482,
5.894652843475342,
6.145711898803711,
6.352583885192871,
6.372499465942383,
6.408100605010986,
6.583265781402588,
6.5900702476501465,
6.712958335876465,
6.844676494598389,
6.885913848876953,
7.049501419067383,
7.354936122894287,
7.804256439208984,
7.840712547302246,
8.15762710571289,
8.445928573608398,
8.460736274719238,
8.624430656433105,
9.169586181640625,
10.800409317016602,
11.45039176940918,
12.051713943481445,
12.907122611999512,
12.90733814239502,
13.139565467834473],
[-7.589427947998047,
-7.1062517166137695,
-5.63678503036499,
-4.133049488067627,
-3.5500783920288086,
-3.4870262145996094,
-3.436232328414917,
-3.406414747238159,
-3.1192824840545654,
-2.8603007793426514,
-2.386935234069824,
-2.059821844100952,
-2.0444228649139404,
-1.97234308719635,
-1.4062156677246094,
-1.3459522724151611,
-1.073409914970398,
-0.757297933101654,
-0.6327800750732422,
-0.5815038681030273,
-0.3910321295261383,
-0.050726234912872314,
0.0595727264881134,
0.14356538653373718,
0.1897287219762802,
0.3704287111759186,
0.4717261493206024,
0.49923914670944214,
0.5106364488601685,
0.5243638753890991,
0.8473693132400513,
0.9094401597976685,
0.9221314191818237,
1.1350890398025513,
1.2897729873657227,
1.2912160158157349,
1.3063991069793701,
1.3116838932037354,
1.3330624103546143,
1.53951096534729,
1.6018093824386597,
1.67595636844635,
1.7195210456848145,
1.7769880294799805,
1.8243030309677124,
1.8592665195465088,
1.9819296598434448,
2.164571762084961,
2.182398796081543,
2.3214306831359863,
2.6714744567871094,
2.68278169631958,
2.8889081478118896,
2.979365825653076,
3.019981861114502,
3.0388193130493164,
3.4729976654052734,
3.4772069454193115,
3.678825855255127,
3.704415798187256,
3.8016092777252197,
4.0120463371276855,
4.094934463500977,
4.5995330810546875,
4.654623031616211,
4.788814067840576,
4.883754253387451,
5.012798309326172,
5.012929439544678,
5.034840106964111,
5.095399379730225,
5.250638961791992,
5.2837371826171875,
5.557925224304199,
5.691424369812012,
5.898692607879639,
6.149415969848633,
6.356010913848877,
6.3759002685546875,
6.4114532470703125,
6.586384296417236,
6.593179702758789,
6.715902805328369,
6.847445487976074,
6.888627052307129,
7.051996231079102,
7.357022285461426,
7.805741310119629,
7.842148303985596,
8.158638954162598,
8.446555137634277,
8.461341857910156,
8.624817848205566,
9.169244766235352,
10.797884941101074,
11.44699764251709,
12.047514915466309,
12.901779174804688,
12.901994705200195,
13.1339111328125],
[-7.571461200714111,
-7.088809967041016,
-5.620939254760742,
-4.118837833404541,
-3.5364997386932373,
-3.4735164642333984,
-3.4227776527404785,
-3.3929922580718994,
-3.1061720848083496,
-2.8474717140197754,
-2.3746204376220703,
-2.0478625297546387,
-2.032480239868164,
-1.960478663444519,
-1.3949663639068604,
-1.3347684144973755,
-1.062522053718567,
-0.7467535138130188,
-0.6223708987236023,
-0.5711504220962524,
-0.38088560104370117,
-0.040949393063783646,
0.06922974437475204,
0.1531311571598053,
0.19924433529376984,
0.37974801659584045,
0.4809354245662689,
0.5084185004234314,
0.5198034644126892,
0.5335159301757812,
0.8561704754829407,
0.9181739091873169,
0.930851399898529,
1.1435775756835938,
1.298093557357788,
1.2995350360870361,
1.3147016763687134,
1.3199806213378906,
1.3413360118865967,
1.547560214996338,
1.6097909212112427,
1.6838574409484863,
1.727374792098999,
1.7847793102264404,
1.832042932510376,
1.8669683933258057,
1.989498257637024,
2.1719419956207275,
2.1897497177124023,
2.3286306858062744,
2.6782939434051514,
2.689588785171509,
2.895491600036621,
2.9858508110046387,
3.0264227390289307,
3.0452396869659424,
3.4789464473724365,
3.4831509590148926,
3.6845510005950928,
3.710113286972046,
3.8072009086608887,
4.017409324645996,
4.100207805633545,
4.604258060455322,
4.65928840637207,
4.793333530426025,
4.88817024230957,
5.0170745849609375,
5.017205238342285,
5.039092063903809,
5.09958553314209,
5.254656791687012,
5.287718772888184,
5.561609268188477,
5.694962978363037,
5.902006149291992,
6.152457237243652,
6.358827590942383,
6.378695011138916,
6.414209842681885,
6.588951110839844,
6.595738887786865,
6.718328952789307,
6.849728107452393,
6.890865325927734,
7.054056644439697,
7.35875129699707,
7.80698299407959,
7.843350887298584,
8.159497261047363,
8.447100639343262,
8.461872100830078,
8.62516975402832,
9.169004440307617,
10.795876502990723,
11.444284439086914,
12.044148445129395,
12.89748477935791,
12.897700309753418,
13.129364013671875],
[-7.556859493255615,
-7.074634075164795,
-5.608058452606201,
-4.107281684875488,
-3.5254576206207275,
-3.4625296592712402,
-3.4118356704711914,
-3.3820767402648926,
-3.0955095291137695,
-2.8370375633239746,
-2.364603042602539,
-2.038133382797241,
-2.0227646827697754,
-1.9508267641067505,
-1.3858133554458618,
-1.325668454170227,
-1.0536623001098633,
-0.7381722927093506,
-0.6138994693756104,
-0.5627241134643555,
-0.3726271688938141,
-0.03299083933234215,
0.07709110528230667,
0.1609184890985489,
0.20699100196361542,
0.3873354494571686,
0.4884335994720459,
0.5158924460411072,
0.527267336845398,
0.5409677028656006,
0.8633376359939575,
0.9252863526344299,
0.9379526376724243,
1.1504912376403809,
1.304870843887329,
1.306311011314392,
1.3214643001556396,
1.326738715171814,
1.3480751514434814,
1.5541175603866577,
1.61629319190979,
1.6902943849563599,
1.7337733507156372,
1.7911272048950195,
1.8383492231369019,
1.873243808746338,
1.9956656694412231,
2.177948236465454,
2.1957404613494873,
2.334498882293701,
2.6838538646698,
2.695138692855835,
2.9008595943450928,
2.9911391735076904,
3.031675338745117,
3.050475835800171,
3.483799695968628,
3.4880008697509766,
3.689223051071167,
3.7147626876831055,
3.81176495552063,
4.021787643432617,
4.104513168334961,
4.608119010925293,
4.663100719451904,
4.797027587890625,
4.891780853271484,
5.020571231842041,
5.0207014083862305,
5.042569160461426,
5.103009223937988,
5.257943630218506,
5.290976524353027,
5.564625263214111,
5.697861671447754,
5.904722213745117,
6.154952049255371,
6.361140727996826,
6.380990505218506,
6.416473865509033,
6.591060638427734,
6.597842693328857,
6.720324516296387,
6.8516082763671875,
6.892708778381348,
7.055756568908691,
7.360182285308838,
7.808018207550049,
7.844354152679443,
8.160221099853516,
8.44757080078125,
8.462329864501953,
8.625483512878418,
9.168838500976562,
10.794275283813477,
11.442111015319824,
12.0414457321167,
12.89402961730957,
12.894245147705078,
13.125704765319824],
[-7.544992446899414,
-7.063112258911133,
-5.5975871086120605,
-4.0978851318359375,
-3.5164780616760254,
-3.4535951614379883,
-3.402937412261963,
-3.373199701309204,
-3.0868377685546875,
-2.8285508155822754,
-2.356454849243164,
-2.030219078063965,
-2.0148613452911377,
-1.9429749250411987,
-1.3783661127090454,
-1.318264365196228,
-1.0464529991149902,
-0.7311890125274658,
-0.6070051789283752,
-0.555866539478302,
-0.3659057021141052,
-0.026512641459703445,
0.08349045366048813,
0.16725780069828033,
0.2132973074913025,
0.3935125768184662,
0.4945383071899414,
0.5219774842262268,
0.5333442687988281,
0.5470348000526428,
0.8691738247871399,
0.9310781359672546,
0.9437353610992432,
1.1561217308044434,
1.310390830039978,
1.311829924583435,
1.3269723653793335,
1.3322429656982422,
1.3535641431808472,
1.5594589710235596,
1.6215901374816895,
1.6955382823944092,
1.7389861345291138,
1.796298861503601,
1.843487024307251,
1.878356695175171,
2.0006906986236572,
2.182842969894409,
2.200622320175171,
2.3392813205718994,
2.6883859634399414,
2.699662685394287,
2.9052364826202393,
2.9954514503479004,
3.0359585285186768,
3.0547454357147217,
3.4877591133117676,
3.491956949234009,
3.693035125732422,
3.7185566425323486,
3.8154892921447754,
4.02536153793335,
4.108027458190918,
4.611272811889648,
4.666214942932129,
4.800045967102051,
4.894731521606445,
5.0234293937683105,
5.023560047149658,
5.045412063598633,
5.105808734893799,
5.260632038116455,
5.293641567230225,
5.567094326019287,
5.700234889984131,
5.906947612762451,
6.156998157501221,
6.363039016723633,
6.382874488830566,
6.418332576751709,
6.592794418334961,
6.599571228027344,
6.721965789794922,
6.853155136108398,
6.894226551055908,
7.057157039642334,
7.361364841461182,
7.80888032913208,
7.845190048217773,
8.160831451416016,
8.447975158691406,
8.462722778320312,
8.625760078430176,
9.168725967407227,
10.792997360229492,
11.440369606018066,
12.039276123046875,
12.89124870300293,
12.891464233398438,
13.122757911682129]]
len(yhat_history)
30
len(yhat_history[0]) #0에 100개... [1]에 100개..
100
'o')
plt.plot(x,y,2],'--') plt.plot(x,yhat_history[
'o')
plt.plot(x,y,9],'--') plt.plot(x,yhat_history[
'o')
plt.plot(x,y,14],'--') plt.plot(x,yhat_history[
-
\(\hat{\bf W}\) 관찰
What_history
[[-3.657747745513916, 8.81106948852539],
[-2.554811477661133, 7.861191749572754],
[-1.649186134338379, 7.101552963256836],
[-0.9060712456703186, 6.49347448348999],
[-0.2966785430908203, 6.006272315979004],
[0.20277434587478638, 5.615575313568115],
[0.6119105815887451, 5.302003383636475],
[0.9469034671783447, 5.050129413604736],
[1.2210699319839478, 4.847657680511475],
[1.4453645944595337, 4.684779167175293],
[1.6287915706634521, 4.553659439086914],
[1.778746247291565, 4.448036193847656],
[1.90129816532135, 4.3628973960876465],
[2.0014259815216064, 4.294229507446289],
[2.0832109451293945, 4.238814353942871],
[2.149996757507324, 4.194070339202881],
[2.204521894454956, 4.157923698425293],
[2.249027729034424, 4.128708839416504],
[2.285348415374756, 4.105085849761963],
[2.31498384475708, 4.0859761238098145],
[2.339160442352295, 4.070511341094971],
[2.3588807582855225, 4.057991027832031],
[2.3749637603759766, 4.0478515625],
[2.3880786895751953, 4.039637088775635],
[2.3987717628479004, 4.032979965209961],
[2.40748929977417, 4.027583599090576],
[2.414595603942871, 4.023208141326904],
[2.4203879833221436, 4.019659042358398],
[2.4251089096069336, 4.016779899597168],
[2.4289560317993164, 4.014443874359131]]
-
loss 관찰
loss_history
[8587.6875,
5675.2109375,
3755.637451171875,
2489.581787109375,
1654.0390625,
1102.3206787109375,
737.8441162109375,
496.96514892578125,
337.7142028808594,
232.39694213867188,
162.72906494140625,
116.63263702392578,
86.1263656616211,
65.93397521972656,
52.566444396972656,
43.71583557128906,
37.855220794677734,
33.974090576171875,
31.403636932373047,
29.701112747192383,
28.57339096069336,
27.826366424560547,
27.331483840942383,
27.003639221191406,
26.78643798828125,
26.642536163330078,
26.547197341918945,
26.48402976989746,
26.442174911499023,
26.414440155029297]
plt.plot(loss_history)
학습과정을 animation으로 시각화
from matplotlib import animation
'figure.figsize'] = (7.5,2.5)
plt.rcParams["animation.html"] = "jshtml" plt.rcParams[
-
왼쪽에는 \((x_i,y_i)\) and \((x_i,\hat{y}_i)\) 을 그리고 오른쪽에는 \(loss(w_0,w_1)\) 을 그릴것임
= plt.figure()
fig = fig.add_subplot(1, 2, 1)
ax1 = fig.add_subplot(1, 2, 2, projection='3d') ax2
# 왼쪽 2d 오른쪽 3d 축만 생긴다
-
왼쪽그림!
'o')
ax1.plot(x,y,= ax1.plot(x,yhat_history[0]) # 나중에 애니메이션 할때 필요해요.. line,
fig
-
오른쪽 그림1: \(loss(w_0,w_1)\)
= np.arange(-6, 11, 0.5) ## 파란색곡면을 그리는 코드 (시작)
_w0 = np.arange(-6, 11, 0.5)
_w1 = np.meshgrid(_w1,_w0)
w1,w0 =w0*0
lssfor i in range(len(_w0)):
for j in range(len(_w1)):
=torch.sum((y-_w0[i]-_w1[j]*x)**2)
lss[i,j]=1, cstride=1, color='b',alpha=0.35) ## 파란색곡면을 그리는 코드(끝)
ax2.plot_surface(w0, w1, lss, rstride= 40 ## 3d plot의 view 조절
ax2.azim = 8 ## 3d plot의 view 조절
ax2.dist = 5 ## 3d plot의 view 조절 ax2.elev
fig
-
오른쪽 그림2: \((w_0,w_1)=(2.5,4)\) 와 \(loss(2.5,4)\) 값 <- loss 함수가 최소가 되는 값 (이거 진짜야? ㅋㅋ)
2.5,4,torch.sum((y-2.5-4*x)**2),s=200,color='red',marker='*') ## 최소점을 표시하는 코드 (붉은색 별) ax2.scatter(
<mpl_toolkits.mplot3d.art3d.Path3DCollection at 0x7fac8c960610>
fig
-
오른쪽 그림3: \((w_0,w_1)=(-3.66, 8.81)\) 와 \(loss(-3.66,8.81)\) 값
0] What_history[
[-3.657747745513916, 8.81106948852539]
0][0],What_history[0][1],loss_history[0],color='grey') ## 업데이트되는 What을 표시하는 점 (파란색 동그라미)
ax2.scatter(What_history[#처음 값!! 오른쪽 그림에서 저 동그라미 회색점이 별표로 가야해~~ 경사하강법생각하자!
<mpl_toolkits.mplot3d.art3d.Path3DCollection at 0x7fac8c7e5710>
fig
-
애니메이션
def animate(epoc):
line.set_ydata(yhat_history[epoc])0],What_history[epoc][1],loss_history[epoc],color='grey')
ax2.scatter(What_history[epoc][return line
= animation.FuncAnimation(fig, animate, frames=30)
ani
plt.close() ani
-
함수로 만들자..
def show_lrpr(data,history):
= data
x,y = history
loss_history,yhat_history,What_history
= plt.figure()
fig = fig.add_subplot(1, 2, 1)
ax1 = fig.add_subplot(1, 2, 2, projection='3d')
ax2
## ax1: 왼쪽그림
'o')
ax1.plot(x,y,= ax1.plot(x,yhat_history[0])
line, ## ax2: 오른쪽그림
= np.arange(-6, 11, 0.5) ## 파란색곡면을 그리는 코드 (시작)
_w0 = np.arange(-6, 11, 0.5)
_w1 = np.meshgrid(_w1,_w0)
w1,w0 =w0*0
lssfor i in range(len(_w0)):
for j in range(len(_w1)):
=torch.sum((y-_w0[i]-_w1[j]*x)**2)
lss[i,j]=1, cstride=1, color='b',alpha=0.35) ## 파란색곡면을 그리는 코드(끝)
ax2.plot_surface(w0, w1, lss, rstride2.5,4,torch.sum((y-2.5-4*x)**2),s=200,color='red',marker='*') ## 최소점을 표시하는 코드 (붉은색 별)
ax2.scatter(0][0],What_history[0][1],loss_history[0],color='b') ## 업데이트되는 What을 표시하는 점 (파란색 동그라미)
ax2.scatter(What_history[= 40 ## 3d plot의 view 조절
ax2.azim = 8 ## 3d plot의 view 조절
ax2.dist = 5 ## 3d plot의 view 조절
ax2.elev
def animate(epoc):
line.set_ydata(yhat_history[epoc])0],np.array(What_history)[epoc,1],loss_history[epoc],color='grey')
ax2.scatter(np.array(What_history)[epoc,return line
= animation.FuncAnimation(fig, animate, frames=30)
ani
plt.close()return ani
show_lrpr([x,y],[loss_history,yhat_history,What_history])
\(\alpha\)에 대하여 (\(\alpha\)는 학습률)
#머신러닝에서 a는 학습률...
(1) \(\alpha=0.0001\): \(\alpha\) 가 너무 작다면? \(\to\) 비효율적이다.
= [] # 기록하고 싶은것 1
loss_history = [] # 기록하고 싶은것 2
yhat_history = [] # 기록하고 싶은것 3 What_history
= torch.tensor([-5.0,10.0],requires_grad=True)
What=0.0001
alphafor epoc in range(30):
=X@What ; yhat_history.append(yhat.data.tolist())
yhat=torch.sum((y-yhat)**2); loss_history.append(loss.item())
loss
loss.backward() = What.data-alpha * What.grad; What_history.append(What.data.tolist())
What.data =None What.grad
show_lrpr([x,y],[loss_history,yhat_history,What_history])
(2) \(\alpha=0.0083\): \(\alpha\)가 너무 크다면? \(\to\) 다른의미에서 비효율적이다 + 위험하다..
= [] # 기록하고 싶은것 1
loss_history = [] # 기록하고 싶은것 2
yhat_history = [] # 기록하고 싶은것 3 What_history
= torch.tensor([-5.0,10.0],requires_grad=True)
What=0.0083
alphafor epoc in range(30):
=X@What ; yhat_history.append(yhat.data.tolist())
yhat=torch.sum((y-yhat)**2); loss_history.append(loss.item())
loss
loss.backward() = What.data-alpha * What.grad; What_history.append(What.data.tolist())
What.data =None What.grad
show_lrpr([x,y],[loss_history,yhat_history,What_history])
(3) \(\alpha=0.0085\)
= [] # 기록하고 싶은것 1
loss_history = [] # 기록하고 싶은것 2
yhat_history = [] # 기록하고 싶은것 3 What_history
= torch.tensor([-5.0,10.0],requires_grad=True)
What=0.0085
alphafor epoc in range(30):
=X@What ; yhat_history.append(yhat.data.tolist())
yhat=torch.sum((y-yhat)**2); loss_history.append(loss.item())
loss
loss.backward() = What.data-alpha * What.grad.data; What_history.append(What.data.tolist())
What.data =None What.grad
show_lrpr([x,y],[loss_history,yhat_history,What_history])
(4) \(\alpha=0.01\)
= [] # 기록하고 싶은것 1
loss_history = [] # 기록하고 싶은것 2
yhat_history = [] # 기록하고 싶은것 3 What_history
= torch.tensor([-5.0,10.0],requires_grad=True)
What=0.01
alphafor epoc in range(30):
=X@What ; yhat_history.append(yhat.data.tolist())
yhat=torch.sum((y-yhat)**2); loss_history.append(loss.item())
loss
loss.backward() = What.data-alpha * What.grad; What_history.append(What.data.tolist())
What.data =None What.grad
show_lrpr([x,y],[loss_history,yhat_history,What_history])
숙제
-
학습률(\(\alpha\))를 조정하며 실습해보고 스크린샷 제출
# α=0.00912
= []
loss_history = []
yhat_history = [] What_history
= torch.tensor([-5.0,10.0],requires_grad=True)
What=0.00912
alphafor epoc in range(30):
=X@What ; yhat_history.append(yhat.data.tolist())
yhat=torch.sum((y-yhat)**2); loss_history.append(loss.item())
loss
loss.backward() = What.data-alpha * What.grad; What_history.append(What.data.tolist())
What.data =None What.grad
show_lrpr([x,y],[loss_history,yhat_history,What_history])