51 : in_features_(in_features), out_features_(out_features) {
52 assert(in_features != 0);
53 assert(out_features != 0);
54 std::random_device rd;
55 std::mt19937 gen(rd());
56 std::uniform_real_distribution<double> dist(-1.0, 1.0);
58 std::vector<std::vector<double>>(out_features, std::vector<double>(in_features, 0.0));
59 for (
auto& w_vec : this->weight) {
60 for (
auto& w : w_vec) {
66 this->bias = dist(gen);
68 this->bias = std::nullopt;
73 std::vector<double> output(out_features_, 0.0);
75 for (
int i = 0; i < this->out_features_; i++) {
76 for (
int j = 0; j < this->in_features_; j++) {
77 output[i] += weight[i][j] * input_tensor[j];
80 if (bias.has_value()) {
81 output[i] += bias.value();