# Why use SciANN among all other codes?

The main purpose of SciANN is a platform for people with Scientific Computations backgrounds in mind.

You will find this code very useful for:

• Solving ODEs and PDEs using densely connect, complex networks, recurrent networks are on the way.

• This platform is ready to use for Curve Fitting, Differentiations, Integration, etc.

• If you have other scientific computations in mind that are not implemented yet, contact us.

As an example, let's fit a neural network with three-hidden layers, each with 10 neurons and $$\tanh$$ activation function, on data generated from $$sin(x)$$:

import numpy as np
from sciann import Variable, Functional, SciModel
from sciann.constraints import Data

# Synthetic data generated from sin function over [0, 2pi]
x_true = np.linspace(0, np.pi*2, 10000)
y_true = np.sin(x_true)

# The network inputs should be defined with Variable.
x = Variable('x', dtype='float32')
# Each network is defined by Functional.
y = Functional('y', x, [10, 10, 10], activation='tanh')
# The training data is a condition (constraint) on the model.
c1 = Data(y)
# The model is formed with input x and condition c1.
model = SciModel(x, c1)

# Training: .solve runs the optimization and finds the parameters.
model.train(x_true, y_true, batch_size=32, epochs=100)

# used to evaluate the model after the training.
y_pred = model.predict(x_true)


As you may find, this code takes advantage of Keras great design and takes it to the next level for scientific computations.