#include "daal.h"
#include "service.h"
using namespace daal;
using namespace daal::algorithms;
using namespace daal::algorithms::neural_networks;
using namespace daal::algorithms::neural_networks::layers;
using namespace daal::data_management;
using namespace daal::services;
int main(int argc, char *argv[])
{
Collection<size_t> inDims;
inDims.push_back(2);
inDims.push_back(1);
inDims.push_back(3);
inDims.push_back(4);
TensorPtr tensorData = TensorPtr(new HomogenTensor<>(inDims, Tensor::doAllocate));
initializers::truncated_gaussian::Batch<> truncatedGaussInitializer(0.0, 1.0);
truncatedGaussInitializer.input.set(initializers::data, tensorData);
truncatedGaussInitializer.compute();
printTensor(tensorData, "Data with truncated gaussian distribution:");
initializers::gaussian::Batch<> gaussInitializer(1.0, 0.5);
gaussInitializer.input.set(initializers::data, tensorData);
gaussInitializer.compute();
printTensor(tensorData, "Data with gaussian distribution:");
initializers::uniform::Batch<> uniformInitializer(-5.0, 5.0);
uniformInitializer.input.set(initializers::data, tensorData);
uniformInitializer.compute();
printTensor(tensorData, "Data with uniform distribution:");
fullyconnected::forward::Batch<> fullyconnectedLayerForward(5);
fullyconnectedLayerForward.input.set(forward::data, tensorData);
fullyconnectedLayerForward.parameter.weightsInitializer.reset(new initializers::xavier::Batch<>());
fullyconnectedLayerForward.compute();
printTensor(fullyconnectedLayerForward.input.get(layers::forward::weights), "Weights filled by xavier initializer:");
return 0;
}