I’ve tried a few different things (one post withdrawn).  It finally worked by bringing in the embedding sizes at the instantiation, not from the data loader.  However, if I want to test the model out, I want to use the test/validation data set’s embedding sizes.  So bringing in the embedding sizes as an argument doesn’t work for new data. I tried the method you suggested and I get the following error:
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-179-e5525e645ef2> in <module>
      1 torch.manual_seed(101)
----> 2 combined_model = Image_Embedd()
      3 criterion = torch.nn.NLLLoss().cuda()
      4 optimizer = torch.optim.Adam(combined_model.parameters(), lr=0.001)
      5 scheduler = ReduceLROnPlateau(optimizer, 'min', patience = 4, verbose = True, min_lr = .00000001)

<ipython-input-178-54593bbab9b1> in __init__(self)
     14         super().__init__()
     15 
---> 16         self.all_embeddings = nn.ModuleList([nn.Embedding(ni.item(), nf.item()) for ni, nf in embedding_size])
     17         self.embedding_dropout = nn.Dropout(p = .04)
     18 

NameError: name 'embedding_size' is not defined

Here is the model object for reference:
class Image_Embedd(nn.Module):

    def __init__(self):
        '''
        Args
        ---------------------------
        embedding_size: Contains the embedding size for the categorical columns
        num_numerical_cols: Stores the total number of numerical columns
        output_size: The size of the output layer or the number of possible outputs.
        layers: List which contains number of neurons for all the layers.
        p: Dropout with the default value of 0.5
        
        '''
        super().__init__()
              
        self.all_embeddings = nn.ModuleList([nn.Embedding(ni.item(), nf.item()) for ni, nf in embedding_size])
        self.embedding_dropout = nn.Dropout(p = .04)
        
        
        self.cnn = models.resnet50(pretrained=False).cuda()
        
        self.cnn.fc = nn.Linear(self.cnn.fc.in_features, 1000)
        self.fc1 = nn.Linear(1000, 1077)
        self.fc2 = nn.Linear(1077, 128)
        self.fc3 = nn.Linear(128, 2)
        
        
    #define the foward method
    def forward(self, image, x_numerical, x_categorical):
        
        embeddings = []
        for i, e in enumerate(self.all_embeddings):
            embeddings.append(e(x_categorical[:,i]))
            
        x = torch.cat(embeddings, 1)
        x = self.embedding_dropout(x)
        x1 = self.cnn(image)
        x2 = numerical_data
        
        x3 = torch.cat((x1, x2), dim = 1)
        x4 = torch.cat((x, x3), dim = 1)
        x4 = F.relu(self.fc2(x4))
        x4 = F.relu(self.fc3(x4))
        x4 = F.log_softmax(x4)
        return x4

So the problem set is still how to get the embedding sizes in.