class_docstr: Note: The FF layer is not auto-scaled when using a GLU type activation.
  Better do this manually and choose a sensible intermed_size that is nicely divisible.
  
  The neox suggestion for approx. equal parameter count is int(4 * 2 / 3 * hidden_size) * 2 [this is ~5.33]
class_docstr_tok: ["Note",":","The","FF","layer","is","not","auto-scaled","when","using","a","GLU","type","activation",".","Better","do","this","manually","and","choose","a","sensible","intermed_size","that","is","nicely","divisible",".","The","neox","suggestion","for","approx",".","equal","parameter","count","is","int","(","4","*","2","\/","3","*","hidden_size",")","*","2","[","this","is","~5.33","]"]
code: def forward(self, hidden_states):
      return self.dense_out(self.nonlin(self.dense_in(hidden_states)))
  
imports: import torch
  import math
  from typing import Optional, Tuple
  from functools import partial
  from .embeddings import SinusoidalPositional, LearnablePositional, ScaledSinosoidal
  from .attention import get_attention_mechanism
label_desc: Use image node_id 2 for calling the FFNComponent obj's underlying member method code with example usage: obj.forward(hidden_states) and returns: self