I’m trying to pass a state with 5 channels and 30 data points (time steps) through a 1d conv net with a dense network.  I think my problem is in reshaping my data because I keep getting expected or less then expected number of inputs as errors.  Anyone have any ideas what could be my problem? Here is a blog on the kind of data I am working with 11 except I am using it in a reinforcement learning environment.
Here is dummy data with 5 channels
a = np.zeros(30) + 0
b = np.zeros(30) + 1
c = np.zeros(30) + 2
d = np.zeros(30) + 3
e = np.zeros(30) + 4

encoded_array = np.column_stack((a, b, c, d, e))

state = np.transpose(encoded_array)

state = state.reshape(1, 5, 30)

It has a shape of (1, 5, 30) and looks like this…

jupyter21.png699×337 14.1 KB

Here is my netowrk
import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np


class QNetwork(nn.Module):
    def __init__(self, state_size, action_size, seed, conv1=64, conv2=64, fc1_units=128, fc2_units=8):
        super(QNetwork, self).__init__()
        self.seed = torch.manual_seed(seed)

        self.conv1 = nn.Conv1d(in_channels=5, out_channels=conv1, kernel_size=2)
        self.conv2 = nn.Conv1d(in_channels=conv1, out_channels=conv2, kernel_size=2)
        self.mp = nn.MaxPool1d(2)

        self.fc1 = nn.Linear(1792, fc1_units)
        self.fc2 = nn.Linear(fc1_units, fc2_units)
        self.fc3 = nn.Linear(fc2_units, action_size)

    def forward(self, x):

        #x = torch.randn(1, 5, 30)

        in_size = x.size(0)

        x = F.relu(self.conv1(x))
        x = F.relu(self.conv2(x))

        x = x.view(in_size, -1)

        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))

        return self.fc3(x)

Errors I am getting

errors.png1065×413 57.3 KB