code: def test_can_construct_from_params(self):
      params = Params(
          {
              "input_dim": 2,
              "hidden_dims": 3,
              "activations": "relu",
              "num_layers": 2,
          }
      )
      feedforward = FeedForward.from_params(params)
      assert len(feedforward._activations) == 2
      assert [
          isinstance(a, torch.nn.ReLU) for a in feedforward._activations
      ]
      assert len(feedforward._linear_layers) == 2
      assert [
          layer.weight.size(-1) == 3
          for layer in feedforward._linear_layers
      ]
  
      params = Params(
          {
              "input_dim": 2,
              "hidden_dims": [3, 4, 5],
              "activations": ["relu", "relu", "linear"],
              "dropout": 0.2,
              "num_layers": 3,
          }
      )
      feedforward = FeedForward.from_params(params)
      assert len(feedforward._activations) == 3
      assert isinstance(feedforward._activations[0], torch.nn.ReLU)
      assert isinstance(feedforward._activations[1], torch.nn.ReLU)
      # It's hard to check that the last activation is the lambda function we use for `linear`,
      # so this is good enough.
      assert not isinstance(feedforward._activations[2], torch.nn.ReLU)
  
      assert len(feedforward._linear_layers) == 3
      assert feedforward._linear_layers[0].weight.size(0) == 3
      assert feedforward._linear_layers[1].weight.size(0) == 4
      assert feedforward._linear_layers[2].weight.size(0) == 5
  
      assert len(feedforward._dropout) == 3
      assert [d.p == 0.2 for d in feedforward._dropout]
  
file_path: allennlp/tests/modules/feedforward_test.py
imports: from numpy.testing import assert_almost_equal
  import inspect
  import pytest
  import torch
  from allennlp.common import Params
  from allennlp.common.checks import ConfigurationError
  from allennlp.modules import FeedForward
  from allennlp.nn import InitializerApplicator, Initializer, Activation
  from allennlp.common.testing import AllenNlpTestCase
label_desc: Use image node_id 1 for calling the TestFeedForward obj's underlying member method code with example usage: obj.test_can_construct_from_params() without return types