Hi ptrblck,
Thank you so much for your response!
Admittedly, I just use a network that I found online (‘pytorch-sentiment-classification-master’) so I can’t be entirely sure. But I do believe that Batch_Size is the same for both training and validation.
(Worth noting, is that everything is fine when I do not implement any changes to the LSTMCell, and I can do other modifications such as adding extra layers with no issue. It would appear that something about subtracting a 3 dimensional matrix from a transpose of itself, and squaring that output, makes this specific modification take up a tremendous amount of memory, but for some reason, it only overwhelms the GPU during validation and testing.)
Below is more a extensive copy of the code for training, validation and testing:
    train, dev, test = data.TabularDataset.splits(path='./SST2/', train='train.tsv',
                                                  validation='dev.tsv', test='test.tsv', format='tsv',
                                                  fields=[('text', text_field), ('label', label_field)]) 

    train_iter, dev_iter, test_iter = data.BucketIterator.splits((train, dev, test),
                 batch_sizes=(batch_size, len(dev), len(test)), sort_key=lambda x: len(x.text), repeat=False, device=None)

label_field = data.Field(sequential=False)
train_iter, dev_iter, test_iter = load_sst(text_field, label_field, BATCH_SIZE, Difficulty = Difficulty, cuda = cuda)
model = Using(embedding_dim=EMBEDDING_DIM, hidden_dim=HIDDEN_DIM, vocab_size=len(text_field.vocab),
                       use_gpu=cuda, label_size=len(label_field.vocab)-1, batch_size=BATCH_SIZE)


for epoch in range(EPOCHS):
    avg_loss, acc = train_epoch_progress(model, train_iter, loss_function, optimizer, text_field, label_field, epoch)
    tqdm.write('Train: loss %.2f acc %.1f' % (avg_loss, acc*100))
    dev_acc = evaluate(model, dev_iter, loss_function, 'Dev')
    if dev_acc > best_dev_acc:
        if best_dev_acc > 0:
            os.system('rm '+ out_dir + '/best_model' + '.pth')
        best_dev_acc = dev_acc
        best_model = model
        torch.save(best_model.state_dict(), out_dir + '/best_model' + '.pth')
        # evaluate on test with the best dev performance model
        test_acc = evaluate(best_model, test_iter, loss_function, 'Test')
test_acc = evaluate(best_model, test_iter, loss_function, 'Final Test')

Thanks again!