File size: 770 Bytes
fb6457c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma once

#include <cstddef>
#include <memory>
#include <stdexcept>

namespace bsh {

class Tensor {
public:
    explicit Tensor(size_t rows, size_t cols);
    ~Tensor();

    Tensor(const Tensor&) = default;
    Tensor& operator=(const Tensor&) = default;
    Tensor(Tensor&&) = default;
    Tensor& operator=(Tensor&&) = default;

    void fill(float value);
    float& at(size_t row, size_t col);
    const float& at(size_t row, size_t col) const;
    
    float* data();
    const float* data() const;
    
    size_t rows() const;
    size_t cols() const;
    size_t size() const;
    
    Tensor transpose() const;
    void softmax(Tensor& output) const;

private:
    size_t rows_;
    size_t cols_;
    std::unique_ptr<float[]> data_;
};

} // namespace bsh