class_docstr: An energy function E(x, y) for visual single-label classification.
  
  An energy function takes an image x and label y
  as the input and outputs a real number.
  We use a LeNet-style architecture to extract an embedding from x
  that is that concatenated with y and passed through a single hidden
  layer fully-connected network.
  
  Args:
      n_fc_hidden (int): The number of hidden units the
        fully-connected layers have.
      n_cls (int): The number of classes.
class_docstr_tok: ["An","energy","function","E","(","x",",","y",")","for","visual","single-label","classification",".","An","energy","function","takes","an","image","x","and","label","y","as","the","input","and","outputs","a","real","number",".","We","use","a","LeNet-style","architecture","to","extract","an","embedding","from","x","that","is","that","concatenated","with","y","and","passed","through","a","single","hidden","layer","fully-connected","network",".","Args",":","n_fc_hidden","(","int",")",":","The","number","of","hidden","units","the","fully-connected","layers","have",".","n_cls","(","int",")",":","The","number","of","classes","."]
code: def forward(self, x, y):
      # First extract an embedding z from the visual input x.
      #
      # We use softplus activations so our model has
      # (generally) non-zero second-order derivatives.
      z = F.softplus(self.conv1(x))
      z = F.max_pool2d(z, 2, 2)
      z = F.softplus(self.conv2(z))
      z = F.max_pool2d(z, 2, 2)
      z = z.view(-1, 4 * 4 * 50)
      z = F.softplus(self.fc1(z))
      z = self.fc2(z)
  
      # Next combine that embedding with the proposed label y
      # and pass that through a single hidden-layer to predict
      # the energy function value.
      v = torch.cat((z, y), dim=1)
      v = F.softplus(self.fce1(v))
      E = self.fce2(v).squeeze()
      return E
  
imports: import argparse
  import typing
  import torch
  from torch import nn
  from torch.utils.data import DataLoader
  import torch.nn.functional
  import torch.optim
  from torchvision import datasets, transforms
  import higher
label_desc: Use image node_id 2 for calling the EnergyNet obj's underlying member method code with example usage: obj.forward(x, y) and returns: E