# Artificial Neural Network (DL\_ANN)

An artificial neural network (ANN) is a type of machine learning model inspired by the structure and function of biological neurons in the human brain. It consists of layers of interconnected nodes (neurons) that process input data and produce output predictions.\
\
Each neuron takes in one or more inputs, applies a mathematical function to them, and passes the result to the next layer of neurons.\
\
By adjusting the weights and biases of the connections between neurons during training, the network can learn to make accurate predictions on new data. ANNs are used for a wide variety of tasks, including image and speech recognition, natural language processing, and predictive modeling.

## Sample Request

Build a sequential ANN model for Binary Classification

```json
{
    "project_id": 1,
    "parent_id": 7,
    "block_id": 8,
    "function_code": "DL_ANN_S_I",
    "args": {
        "layer_list": [
            {
                "type": "conv2d",
                "filters": 32,
                "kernel_size": [3, 3],
                "padding": "valid",
                "activation": "relu"
            },
            {
                "type": "maxpooling2d",
                "pool_size": [2, 2]
            },
            {
                "type": "upsampling2d",
                "size": [2, 2]
            },
            {
                "type": "flatten"
            },
            {
                "type": "dropout",
                "rate": 0.5,
            },
            {
                "type": "embedding",
                "input_dim": 1000,
                "output_dim": 64
            },
            {
                "type": "lstm",
                "units": 64,
                "return_sequences": false
            },
            {
                "type": "batchnormalization",
            {
                "type": "dense",
                "units": 1,
                "activation": "sigmoid"
            }
        ]
    }
}
```

## Building a Sequential Artificial Neural Network

## Sequential ANN Construction

<mark style="color:green;">`POST`</mark> `https://autogon.ai/api/v1/engine/start`

#### Request Body

| Name                                             | Type   | Description                                                                   |
| ------------------------------------------------ | ------ | ----------------------------------------------------------------------------- |
| project\_id<mark style="color:red;">\*</mark>    | int    | The `id` of the current project                                               |
| block\_id<mark style="color:red;">\*</mark>      | int    | The `id` of the current block                                                 |
| function\_code<mark style="color:red;">\*</mark> | string | The function code for current block                                           |
| parent\_id<mark style="color:red;">\*</mark>     | int    | The `id` of the previous block                                                |
| args<mark style="color:red;">\*</mark>           | object | Block arguments                                                               |
| layer\_list<mark style="color:red;">\*</mark>    | list   | List of layers for the Artificial Neural Network                              |
| type<mark style="color:red;">\*</mark>           | string | Type of layer to add                                                          |
| units<mark style="color:red;">\*</mark>          | int    | Dimensionality of the output space of the layer                               |
| activation                                       | string | Activation function applied to the layer's output. Default: "relu".           |
| filters                                          | int    | Number of filters or output channels in the convolutional layer. Default: 32. |
| kernel\_size                                     | array  | Size of the convolutional kernel. Default: \[3, 3].                           |
| padding                                          | string | Padding scheme for the layer. Default: "valid".                               |
| pool\_size                                       | array  | Size of the pooling window. Default: \[2, 2].                                 |
| rate                                             | float  | Fraction of input units to drop during training (0-1). Default: 0.5.          |
| input\_dim                                       | int    | Size of the input vocabulary. Default: 1000.                                  |
| output\_dim                                      | int    | Dimensionality of the dense embedding. Default: 64.                           |
| return\_sequences                                | bool   | Whether to return the full sequence or only the last output. Default: false.  |
| size                                             | array  | <p>The upsampling factors for rows and columns.</p><p>Default: \[2, 2].</p>   |

{% tabs %}
{% tab title="200 Statemanagement object" %}

```json
{
    "status": "true",
    "message": {
        "id": 8,
        "project": 1,
        "block_id": 8,
        "parent_id": 7,
        "dataset_url": "",
        "x_value_url": "",
        "y_value_url": "",
        "x_train_url": "",
        "y_train_url": "",
        "x_test_url": "",
        "y_test_url": "",
        "output": {}
    }
}
```

{% endtab %}
{% endtabs %}

## Sample Request

Compile and train the pre-built ANN model, using passed-in Hyper Parameters

```json
{
    "project_id": 1,
    "parent_id": 8,
    "block_id": 9,
    "function_code": "DL_ANN_T",
    "args": {
        "model_name": "titanic_model",
        "add_dim": false,
        "hyp_params":{
            "optimizer": "adam",
            "loss": "binary_crossentropy",
            "metrics": ["accuracy"],
            "batch_size": 12,
            "epochs": 5,
            "autoencoder": false
        }
    }
}
```

## Training an Artificial Neural Network

## ANN Training

<mark style="color:green;">`POST`</mark> `https://autogon.ai/api/v1`

#### Request Body

| Name                                             | Type   | Description                                                                      |
| ------------------------------------------------ | ------ | -------------------------------------------------------------------------------- |
| project\_id<mark style="color:red;">\*</mark>    | int    | The `id` of the current project                                                  |
| hyp\_params<mark style="color:red;">\*</mark>    | object | hyper parameters for model compilation and training                              |
| parent\_id<mark style="color:red;">\*</mark>     | int    | The `id` of the previous block                                                   |
| block\_id<mark style="color:red;">\*</mark>      | int    | The `id` of the current block                                                    |
| function\_code<mark style="color:red;">\*</mark> |        | The function code for current block                                              |
| args<mark style="color:red;">\*</mark>           | object | Block arguments                                                                  |
| model\_name<mark style="color:red;">\*</mark>    | String | The name the model would be saved with                                           |
| optimizer                                        | String | Optimization function to be used e.g: `"adam"`                                   |
| loss<mark style="color:red;">\*</mark>           | String | Loss function to be used e.g: `"binary_crossentropy"`                            |
| metrics                                          | list   | Evaluation metrics used to judge the performance of the model                    |
| batch\_size                                      | String | Number of samples that are processed by the model during each training iteration |
| epochs<mark style="color:red;">\*</mark>         | String | Number of iterations through the dataset                                         |
| add\_dim                                         | bool   | Sets whether an extra dimension should be added to `x` train data                |
| autoencoder                                      | bool   | Specifies whether to use x data as y data                                        |

{% tabs %}
{% tab title="200: OK Statemanagement Object" %}

```json
{
    "status": "true",
    "message": {
        "id": 9,
        "project": 1,
        "block_id": 9,
        "parent_id": 8,
        "dataset_url": "",
        "x_value_url": "",
        "y_value_url": "",
        "x_train_url": "",
        "y_train_url": "",
        "x_test_url": "",
        "y_test_url": "",
        "output": {}
    }
}
```

{% endtab %}
{% endtabs %}

## Sample Request

Evaluate the accuracy and losses of a trained artificial neural network.

```json
{
    "project_id": 1,
    "parent_id": 8,
    "block_id": 9,
    "function_code": "DL_ANN_E",
    "args": {
        "hyp_params": {
            "batch_size": 32
        }
    }
}
```

## Evaluating an Artificial Neural Network

## ANN Evaluating

<mark style="color:green;">`POST`</mark>&#x20;

#### Request Body

| Name                                             | Type   | Description                                                         |
| ------------------------------------------------ | ------ | ------------------------------------------------------------------- |
| project\_id<mark style="color:red;">\*</mark>    | int    | The `id` of the current project                                     |
| parent\_id<mark style="color:red;">\*</mark>     | int    | The `id` of the previous block                                      |
| block\_id<mark style="color:red;">\*</mark>      | int    | The `id` of the current block                                       |
| function\_code<mark style="color:red;">\*</mark> | String | Function code for the current block                                 |
| args<mark style="color:red;">\*</mark>           | object | Block arguments                                                     |
| hyp\_params<mark style="color:red;">\*</mark>    | object | hyper parameters for model evaluation                               |
| batch\_size                                      | int    | Number of samples that are processed by the model during evaluation |

{% tabs %}
{% tab title="200: OK Statemanagement object" %}

```json
{
    "status": "true",
    "message": {
        "id": 9,
        "project": 1,
        "block_id": 9,
        "parent_id": 8,
        "dataset_url": "",
        "x_value_url": "",
        "y_value_url": "",
        "x_train_url": "",
        "y_train_url": "",
        "x_test_url": "",
        "y_test_url": "",
        "output": {}
    }
}
```

{% endtab %}
{% endtabs %}

## Sample Request

Make predictions with the trained ANN model.

```json
{
    "project_id": 1,
    "parent_id": 8,
    "block_id": 9,
    "function_code": "DL_ANN_P",
    "args": {
        "test_data": ""
    }
}
```

## Predicting with an Artificial Neural Network

## ANN Predict

<mark style="color:green;">`POST`</mark> `https://autogon.ai/api/v1/engine/start`

#### Request Body

| Name                                             | Type   | Description                                                  |
| ------------------------------------------------ | ------ | ------------------------------------------------------------ |
| test\_data                                       | String | <p>Input data for prediction<br>Defaults to x\_test\_url</p> |
| project\_id<mark style="color:red;">\*</mark>    | int    | ID of the current project                                    |
| block\_id<mark style="color:red;">\*</mark>      | int    | ID of the current block                                      |
| parent\_id<mark style="color:red;">\*</mark>     | int    | ID of the previous block                                     |
| function\_code<mark style="color:red;">\*</mark> | String | Function code for the current block                          |
| args<mark style="color:red;">\*</mark>           | object | Block arguments                                              |
| add\_dim                                         | bool   | Sets whether an extra dimension should be added to `x` data  |

{% tabs %}
{% tab title="200: OK Statemanagement object" %}

```javascript
{
    "status": "true",
    "message": {
        "id": 9,
        "project": 1,
        "block_id": 9,
        "parent_id": 8,
        "dataset_url": "",
        "x_value_url": "",
        "y_value_url": "",
        "x_train_url": "",
        "y_train_url": "",
        "x_test_url": "",
        "y_test_url": "",
        "output": {}
    }
}
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Python" %}

```
// Some code
```

{% endtab %}

{% tab title="Node" %}

```
// Some code
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.autogon.ai/autogon-engine-studio/deep-learning/artificial-neural-network-dl_ann.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
