#ifndef CORE_H #define CORE_H #include "typedef.hpp" #include #include #include "core.hpp" #include #include #include #include #include class NeuralNetwork { private: int numLayers; std::vector sizes; std::vector>> weights; std::vector> biases; std::vector> outputs; vk::Instance instance; vk::PhysicalDevice physDev; vk::Device device; vk::Queue queue; vk::CommandPool cmdPool; uint32_t NeuralNetwork::findMemoryType(uint32_t typeFilter, vk::MemoryPropertyFlags properties); double sigmoid(double x) { return 1.0 / (1.0 + exp(-x)); } double sigmoidDeriv(double x) { return x * (1.0 - x); } public: int cpu_count = 1; NeuralNetwork(LayerStructure_t layers[], int count, bool useVulkan = false); std::vector feedForward(const std::vector& input); double train(const std::vector& input, const std::vector& target, double lr); double trainVulkan(); }; #endif