I am trying to build a reinforcement-learning system via OpenAI that is going to perform actions such BUY, SELL, HOLD a stock from the market.
From now I am trying to implement an actual NN that will be used by my agent but I have some problems regarding how to shape the date correctly.
class NeuronalNetwork(nn.Module):
def __init__(self, input_size, stock_env: StockEnv):
super(NeuronalNetwork, self).__init__()
self.stock_env = stock_env
hidden_dim = 256
input_size = len(self.stock_env.normalized_dataframe.columns)
self.hidden_size = 128
self.num_layers = 1
output_size = self.stock_env.action_space.n
self.lstm = nn.LSTM(input_size=input_size, hidden_size=self.hidden_size, num_layers=self.num_layers,
batch_first=True)
self.output_layer = nn.Linear(hidden_dim, output_size)
self.tanh = nn.Tanh()
def forward(self, x, hidden=None):
# N x T x D
# N - the number of windows sizes
# T - the window size
# D - the number of indicators and OHLCV in total
if hidden is None:
hidden = (
torch.zeros(self.num_layers, 1, self.hidden_size).to(device),
torch.zeros(self.num_layers, 1, self.hidden_size).to(device),
)
D = len(self.stock_env.normalized_dataframe.columns)
T = self.stock_env.window_size
N = 1
x = x.view(N, T, D).type(torch.FloatTensor).to(device)
out, (ht, ct) = self.lstm(x, hidden)
out = self.tanh(out)
out = self.output_layer(out)
return out, hidden
I am having a pandas dataframe with my Open, High, Low, Close, Volume price data which is my input_size and my output_size will be 3 (BUY, HOLD, SELL) because I want to predict the next falling action.
I’m not sure what I am doing wrong but I am getting the following error:
mat1 dim 1 must match mat2 dim 0
when I am trying to run self.output_layer(out)
I’m a newbie here, could anyone of you explain please what I am doing wrong?