mrshibly commited on
Commit
5112cd4
·
verified ·
1 Parent(s): 17ea6b8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -7
app.py CHANGED
@@ -1,6 +1,6 @@
1
  import gradio as gr
2
  import torch
3
- import torch.nn as nn # Added missing import
4
  import numpy as np
5
  from sklearn.preprocessing import MinMaxScaler
6
  import pandas as pd
@@ -9,29 +9,29 @@ import pandas as pd
9
  df = pd.read_csv('HistoricalQuotes.csv')
10
  df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')
11
  df.set_index('Date', inplace=True)
12
- df = df[[' Close/Last']].rename(columns={' Close/Last': 'Close'})
13
  df = df.sort_index()
14
  df['Close'] = df['Close'].replace({r'\$': ''}, regex=True).astype(float)
15
 
16
  scaler = MinMaxScaler(feature_range=(0, 1))
17
  scaler.fit(df['Close'].values.reshape(-1, 1))
18
 
19
- # Define LSTM model
20
  class LSTMModel(nn.Module):
21
- def __init__(self, input_size=1, hidden_size=100, num_layers=2, output_size=1, dropout=0.2):
22
  super().__init__()
23
  self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, dropout=dropout)
24
  self.fc = nn.Linear(hidden_size, output_size)
25
 
26
  def forward(self, x):
27
- h0 = torch.zeros(num_layers, x.size(0), 100)
28
- c0 = torch.zeros(num_layers, x.size(0), 100)
29
  out, _ = self.lstm(x, (h0, c0))
30
  return self.fc(out[:, -1, :])
31
 
32
  # Load model
33
  model = LSTMModel()
34
- model.load_state_dict(torch.load('lstm_model.pth', map_location=torch.device('cpu'))) # Added map_location for compatibility
35
  model.eval()
36
 
37
  def forecast(past_prices, steps=30):
 
1
  import gradio as gr
2
  import torch
3
+ import torch.nn as nn
4
  import numpy as np
5
  from sklearn.preprocessing import MinMaxScaler
6
  import pandas as pd
 
9
  df = pd.read_csv('HistoricalQuotes.csv')
10
  df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')
11
  df.set_index('Date', inplace=True)
12
+ df = df[['Close/Last']].rename(columns={'Close/Last': 'Close'})
13
  df = df.sort_index()
14
  df['Close'] = df['Close'].replace({r'\$': ''}, regex=True).astype(float)
15
 
16
  scaler = MinMaxScaler(feature_range=(0, 1))
17
  scaler.fit(df['Close'].values.reshape(-1, 1))
18
 
19
+ # Define LSTM model (matching trained model: hidden_size=50)
20
  class LSTMModel(nn.Module):
21
+ def __init__(self, input_size=1, hidden_size=50, num_layers=2, output_size=1, dropout=0.2):
22
  super().__init__()
23
  self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, dropout=dropout)
24
  self.fc = nn.Linear(hidden_size, output_size)
25
 
26
  def forward(self, x):
27
+ h0 = torch.zeros(num_layers, x.size(0), hidden_size)
28
+ c0 = torch.zeros(num_layers, x.size(0), hidden_size)
29
  out, _ = self.lstm(x, (h0, c0))
30
  return self.fc(out[:, -1, :])
31
 
32
  # Load model
33
  model = LSTMModel()
34
+ model.load_state_dict(torch.load('lstm_model.pth', map_location=torch.device('cpu')))
35
  model.eval()
36
 
37
  def forecast(past_prices, steps=30):