• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

수식의 변경

21.06.14 18:33 작성 조회수 123

1

import FinanceDataReader as fdr

df = fdr.DataReader('005930', '2010')

df['Close'].plot()

위  수식의 그래프가

아래의 수식에서 작동 할 수 있도록 

변경이 가능 한지요?

도와 주시면 감사 하겠습니다.

                                  # https://github.com/WegraLee/deep-learning-from-scratch-3/blob/master/steps/step60.py    #   에서 참조 하였습니다.

 

if '__file__' in globals():

    import os, sys

    sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

import numpy as np

import matplotlib.pyplot as plt

import dezero

from dezero import Model

from dezero import SeqDataLoader

import dezero.functions as F

import dezero.layers as L

max_epoch = 100

batch_size = 10

hidden_size = 200

bptt_length = 30

train_set = dezero.datasets.SinCurve(train=True)     

dataloader = SeqDataLoader(train_set, batch_size=batch_size)   

seqlen = len(train_set)

class BetterRNN(Model):

    def __init__(self, hidden_size, out_size):

        super().__init__()

        self.rnn = L.LSTM(hidden_size)                           

        self.fc = L.Linear(out_size)

    def reset_state(self):

        self.rnn.reset_state()

    def __call__(self, x):

        y = self.rnn(x)

        y = self.fc(y)

        return y

model = BetterRNN(hidden_size, 1)

optimizer = dezero.optimizers.Adam().setup(model)

for epoch in range(max_epoch):

    model.reset_state()

    loss, count = 0, 0

    for x, t in dataloader:

        y = model(x)

        loss += F.mean_squared_error(y, t)

        count += 1

        if count % bptt_length == 0 or count == seqlen:                                                          

            model.cleargrads()

            loss.backward()

            loss.unchain_backward()                      

            optimizer.update()

    avg_loss = float(loss.data) / count

    print('| epoch %d | loss %f' % (epoch + 1, avg_loss))

# Plot

xs = np.cos(np.linspace(0, 4 * np.pi, 1000))

model.reset_state()                                      

pred_list = []

with dezero.no_grad():

    for x in xs:

        x = np.array(x).reshape(1, 1)

        y = model(x)

        pred_list.append(float(y.data))

plt.plot(np.arange(len(xs)), xs, label='y=cos(x)')

plt.plot(np.arange(len(xs)), pred_list, label='predict')

plt.xlabel('x')

plt.ylabel('y')

plt.legend()

plt.show()

답변 3

·

답변을 작성해보세요.

1

이상의님의 프로필

이상의

질문자

2021.06.19

네, 답변 감사합니다

응원하겠습니다. 화이팅이에요! 감사합니다 :)

0

이상의님의 프로필

이상의

질문자

2021.06.19

부끄럽게도 손도 못 데 봤습니다.

선생님이  완성해 주시면 

공부하려고 말씀 드린 겁니다.

안녕하세요. 질문 주신 내용의 그래프를 그리는 부분과 딥러닝 모델의 실제값과 예측값을 그리는 것을 비교하기에는 내용의 차이가 너무 큽니다. 일단 해당 책의 예제가 정상적으로 동작하는지 확인해 보시고 하나씩 질문을 해주셔야 제가 답변을 드릴 수 있을 것 같습니다.

파이썬을 시작하신지 얼마 되지 않았다면 밑바닥부터 RNN 모델을 구현해서 이해하는 것도 좋지만 추상화된 모델로 먼저 이해해 보시고 RNN 모델을 밑바닥부터 구현해 보는 걸 추천합니다.

아래 강좌는 모두 무료로 수강해 볼 수 있는 강좌입니다.  수강해 보시는 걸 추천합니다.

https://www.inflearn.com/course/%ED%98%BC%EC%9E%90%EA%B3%B5%EB%B6%80-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D 

[텐서플로우로 시작하는 딥러닝 기초 강좌소개 : 부스트코스](https://www.boostcourse.org/ai212)

[파이토치로 시작하는 딥러닝 기초 강좌소개 : 부스트코스](https://www.boostcourse.org/ai214)

0

안녕하세요.

질문 주신 내용은 matplotlib 을 통한 시각화 이고,

수업에서 사용한 시각화는 pandas에 내장된 matplotlib을 사용하는 예제입니다.

질문해 주신 matplotlib 을 pandas 스타일의 plot으로 그리려면 해당 데이터를 시리즈 혹은 데이터프레임으로 변환하고 x축에 오는 값을 인덱스로 설정하고 y축에 있는 값이 컬럼에 위치하도록 만들어 주시면 됩니다.

xs 값과 predict  값을 비교해 보고 싶다면 아래와 같이 해보세요.

pd.DataFrame({"xs":xs, "pred_list": pred_list}).plot()

이상의님의 프로필

이상의

질문자

2021.06.15

답변 감사합니다.

이상의님의 프로필

이상의

질문자

2021.06.18

선생님께  다시 부탁 드립니다

제가 아직 공부가 부족하여

말씀 하신대로 수식의 변경을 시도하여 봤으나

좀처럼 제대로 되지를 않네요

죄송하지만 

변경 된 수식을 완성하여 주시면 

대단히 고맙겠습니다.

안녕하세요. 어디까지 변경해 보셨는지를 함께 올려주시고 오류가 났다면 스크린샷을 올려주시면 도움을 드리겠습니다. 질문 주신 내용만으로는 어느 부분이 안 되는지 알기 어렵습니다.