def value(obs, weights):
    """
    Given weights, return the evaluation to one state/obseration
    :param obs: observation
    :param weights: variable weights of NN
    :return: value
    """
    if weights is None:
        return 0
    obs = obs.reshape(1, -1)
    x = np.matmul(obs, weights["default_policy/fc_value_1/kernel"]) + weights["default_policy/fc_value_1/bias"]
    x = np.tanh(x)
    x = np.matmul(x, weights["default_policy/fc_value_2/kernel"]) + weights["default_policy/fc_value_2/bias"]
    x = np.tanh(x)
    x = np.matmul(x, weights["default_policy/value_out/kernel"]) + weights["default_policy/value_out/bias"]
    ret = x.reshape(-1)
    return ret

    Given weights, return the evaluation to one state/obseration
    :param obs: observation
    :param weights: variable weights of NN
    :return: value
    
metadrive/examples/ppo_expert/numpy_expert.py