载入中...
搜索中...
未找到
TF.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Module.h"
4
5#include <cstdint>
6#include <vector>
7
8namespace eve::tensor {
9
10class Tensor;
11class Func;
12class CompiledFunction;
13
18class TF : public Module {
19public:
21 TF();
22 ~TF() override = default;
23
24 Func *func();
25
26 void pushTrace(Func *f);
27 void popTrace(Func *f);
28 Func *tracing() const;
29
30 // --- factories (eager, or Const nodes while tracing) ---
31 Tensor *zeros1(int d0);
32 Tensor *zeros2(int d0, int d1);
33 Tensor *zeros3(int d0, int d1, int d2);
34 Tensor *zeros4(int d0, int d1, int d2, int d3);
35 Tensor *zeros5(int d0, int d1, int d2, int d3, int d4);
36 Tensor *zeros6(int d0, int d1, int d2, int d3, int d4, int d5);
37
38 Tensor *ones1(int d0);
39 Tensor *ones2(int d0, int d1);
40 Tensor *ones3(int d0, int d1, int d2);
41 Tensor *ones4(int d0, int d1, int d2, int d3);
42 Tensor *ones5(int d0, int d1, int d2, int d3, int d4);
43 Tensor *ones6(int d0, int d1, int d2, int d3, int d4, int d5);
44
45 Tensor *fill1(int d0, float value);
46 Tensor *fill2(int d0, int d1, float value);
47 Tensor *fill3(int d0, int d1, int d2, float value);
48 Tensor *fill4(int d0, int d1, int d2, int d3, float value);
49
51 Tensor *arange(int n);
52 Tensor *linspace(float start, float end, int n);
53 Tensor *eye(int n);
54
55 Tensor *randomUniform1(int d0);
56 Tensor *randomUniform2(int d0, int d1);
57 Tensor *randomUniform3(int d0, int d1, int d2);
58 Tensor *randomUniform4(int d0, int d1, int d2, int d3);
59 Tensor *randomNormal1(int d0);
60 Tensor *randomNormal2(int d0, int d1);
61 Tensor *randomNormal3(int d0, int d1, int d2);
62 Tensor *randomNormal4(int d0, int d1, int d2, int d3);
63
64 // aliases
65 Tensor *rand1(int d0) { return randomUniform1(d0); }
66 Tensor *rand2(int d0, int d1) { return randomUniform2(d0, d1); }
67 Tensor *rand3(int d0, int d1, int d2) { return randomUniform3(d0, d1, d2); }
68 Tensor *rand4(int d0, int d1, int d2, int d3) {
69 return randomUniform4(d0, d1, d2, d3);
70 }
71 Tensor *randn1(int d0) { return randomNormal1(d0); }
72 Tensor *randn2(int d0, int d1) { return randomNormal2(d0, d1); }
73 Tensor *randn3(int d0, int d1, int d2) { return randomNormal3(d0, d1, d2); }
74 Tensor *randn4(int d0, int d1, int d2, int d3) {
75 return randomNormal4(d0, d1, d2, d3);
76 }
77
78 void setRandomSeed(uint32_t seed);
79 uint32_t getRandomSeed() const;
80
81 // --- module-level ops (TF style) ---
86 Tensor *addScalar(Tensor *a, float s);
87 Tensor *subScalar(Tensor *a, float s);
88 Tensor *mulScalar(Tensor *a, float s);
89 Tensor *divScalar(Tensor *a, float s);
102 Tensor *powScalar(Tensor *a, float exp);
103 Tensor *clamp(Tensor *a, float lo, float hi);
104 Tensor *maximumScalar(Tensor *a, float s);
105 Tensor *minimumScalar(Tensor *a, float s);
106
109 Tensor *permute2(Tensor *a, int a0, int a1);
110 Tensor *permute3(Tensor *a, int a0, int a1, int a2);
111 Tensor *permute4(Tensor *a, int a0, int a1, int a2, int a3);
112 Tensor *permute5(Tensor *a, int a0, int a1, int a2, int a3, int a4);
113 Tensor *permute6(Tensor *a, int a0, int a1, int a2, int a3, int a4, int a5);
114 Tensor *reshape1(Tensor *a, int d0);
115 Tensor *reshape2(Tensor *a, int d0, int d1);
116 Tensor *reshape3(Tensor *a, int d0, int d1, int d2);
117 Tensor *reshape4(Tensor *a, int d0, int d1, int d2, int d3);
118 Tensor *reshape5(Tensor *a, int d0, int d1, int d2, int d3, int d4);
119 Tensor *reshape6(Tensor *a, int d0, int d1, int d2, int d3, int d4, int d5);
121 Tensor *where(Tensor *cond, Tensor *a, Tensor *b);
122 Tensor *concatN(Tensor *const *ins, int n, int axis);
123
124 // --- neural / speech / terrain ops (eager + traceable) ---
125 Tensor *softmax(Tensor *a, int axis);
126 Tensor *logSoftmax(Tensor *a, int axis);
127 Tensor *layernorm(Tensor *a, float eps);
128 Tensor *layernormWB(Tensor *a, Tensor *scale, Tensor *bias, float eps);
129 Tensor *rmsnorm(Tensor *a, float eps);
130 Tensor *rmsnormW(Tensor *a, Tensor *scale, float eps);
131 Tensor *conv1d(Tensor *x, Tensor *w, int stride, int pad);
132 Tensor *conv1dBias(Tensor *x, Tensor *w, Tensor *bias, int stride, int pad);
133 Tensor *conv2d(Tensor *x, Tensor *w, int stride, int pad);
134 Tensor *conv2dBias(Tensor *x, Tensor *w, Tensor *bias, int stride, int pad);
135 Tensor *maxpool2d(Tensor *x, int ksize, int stride, int pad);
136 Tensor *avgpool2d(Tensor *x, int ksize, int stride, int pad);
137 Tensor *embedding(Tensor *table, Tensor *indices);
138 Tensor *concat2(Tensor *a, Tensor *b, int axis);
139 Tensor *concat3(Tensor *a, Tensor *b, Tensor *c, int axis);
140 Tensor *concat4(Tensor *a, Tensor *b, Tensor *c, Tensor *d, int axis);
141 Tensor *slice(Tensor *a, int axis, int begin, int end);
142 Tensor *sumAxis(Tensor *a, int axis, int keepDims);
143 Tensor *meanAxis(Tensor *a, int axis, int keepDims);
144 Tensor *minAxis(Tensor *a, int axis, int keepDims);
145 Tensor *maxAxis(Tensor *a, int axis, int keepDims);
146 Tensor *argmax(Tensor *a, int axis, int keepDims);
147 Tensor *cast(Tensor *a, const std::string &dtype);
148 Tensor *sdpa(Tensor *q, Tensor *k, Tensor *v, float scale);
149 Tensor *sdpaMasked(Tensor *q, Tensor *k, Tensor *v, Tensor *mask, float scale);
150 Tensor *resize2d(Tensor *a, int outW, int outH, int mode);
151
157 Tensor *quantizeWeight(Tensor *a, const std::string &dtype, int group = 0);
158
159 float reduceSum(Tensor *a);
160 float reduceMean(Tensor *a);
161 float reduceMin(Tensor *a);
162 float reduceMax(Tensor *a);
163
164private:
165 uint32_t seed_ = 1;
166 mutable uint32_t rngState_ = 1;
167 std::vector<Func *> traceStack_;
168
169 float nextUniform() const;
170 float nextGaussian() const;
171 Tensor *filled(const int *dims, int rank, float value);
172};
173
174} // namespace eve::tensor
uint32_t seed
std::string value
int x
Definition Grass.cpp:135
glm::vec3 n
Definition Grass.cpp:64
int w
const FusedGroup & group
uint32_t a
uint32_t b
uint32_t c
float f
glm::vec3 eye
int d
int v
float scale
Definition TreeMesh.cpp:122
uint32_t s
Definition Weather.cpp:28
Trace builder — TF2 tf.function analogue (tf.func in scripts). While active, TF ops record into this ...
Definition Graph.h:125
TF2-like namespace module. Script: tf <- eve.TF(); Default eager; tf.func() traces a graph for compil...
Definition TF.h:18
Tensor * randn4(int d0, int d1, int d2, int d3)
Definition TF.h:74
Tensor * maxAxis(Tensor *a, int axis, int keepDims)
Tensor * transpose(Tensor *a)
Definition TF.cpp:354
Tensor * minimumScalar(Tensor *a, float s)
Definition TF.cpp:342
Tensor * layernormWB(Tensor *a, Tensor *scale, Tensor *bias, float eps)
Definition TF.cpp:492
Tensor * reshape2(Tensor *a, int d0, int d1)
Definition TF.cpp:397
Tensor * quantizeWeight(Tensor *a, const std::string &dtype, int group=0)
Definition TF.cpp:616
Tensor * neg(Tensor *a)
Tensor * rand3(int d0, int d1, int d2)
Definition TF.h:67
Tensor * layernorm(Tensor *a, float eps)
Definition TF.cpp:479
Tensor * divScalar(Tensor *a, float s)
Definition TF.cpp:322
Tensor * maxpool2d(Tensor *x, int ksize, int stride, int pad)
Definition TF.cpp:573
Tensor * randomNormal1(int d0)
Definition TF.cpp:240
void popTrace(Func *f)
Definition TF.cpp:77
Tensor * argmax(Tensor *a, int axis, int keepDims)
Definition TF.cpp:733
Tensor * addScalar(Tensor *a, float s)
Definition TF.cpp:307
Tensor * softmax(Tensor *a, int axis)
Definition TF.cpp:455
Tensor * permute3(Tensor *a, int a0, int a1, int a2)
Definition TF.cpp:366
Tensor * linspace(float start, float end, int n)
Definition TF.cpp:184
Tensor * resize2d(Tensor *a, int outW, int outH, int mode)
Definition TF.cpp:784
Tensor * fill3(int d0, int d1, int d2, float value)
Definition TF.cpp:162
Tensor * add(Tensor *a, Tensor *b)
Tensor * concatN(Tensor *const *ins, int n, int axis)
Definition TF.cpp:684
Tensor * multiply(Tensor *a, Tensor *b)
Tensor * zeros1(int d0)
Definition TF.cpp:104
void setRandomSeed(uint32_t seed)
Definition TF.cpp:66
Tensor * relu(Tensor *a)
Tensor * embedding(Tensor *table, Tensor *indices)
Definition TF.cpp:597
Tensor * avgpool2d(Tensor *x, int ksize, int stride, int pad)
Definition TF.cpp:585
Tensor * rand4(int d0, int d1, int d2, int d3)
Definition TF.h:68
float reduceMin(Tensor *a)
Definition TF.cpp:811
Tensor * tanh(Tensor *a)
uint32_t getRandomSeed() const
Definition TF.cpp:71
Tensor * zeros6(int d0, int d1, int d2, int d3, int d4, int d5)
Definition TF.cpp:124
Tensor * fill4(int d0, int d1, int d2, int d3, float value)
Definition TF.cpp:166
Tensor * exp(Tensor *a)
Tensor * ones1(int d0)
Definition TF.cpp:129
Tensor * sigmoid(Tensor *a)
Tensor * clamp(Tensor *a, float lo, float hi)
Definition TF.cpp:332
float reduceMean(Tensor *a)
Definition TF.cpp:804
float reduceSum(Tensor *a)
Definition TF.cpp:795
Tensor * gelu(Tensor *a)
Tensor * reshape5(Tensor *a, int d0, int d1, int d2, int d3, int d4)
Definition TF.cpp:415
Tensor * ones2(int d0, int d1)
Definition TF.cpp:133
Tensor * sumAxis(Tensor *a, int axis, int keepDims)
Tensor * ones3(int d0, int d1, int d2)
Definition TF.cpp:137
Tensor * log(Tensor *a)
Tensor * abs(Tensor *a)
Tensor * randn2(int d0, int d1)
Definition TF.h:72
Tensor * sqrt(Tensor *a)
Tensor * conv1d(Tensor *x, Tensor *w, int stride, int pad)
Definition TF.cpp:534
Tensor * randomNormal4(int d0, int d1, int d2, int d3)
Definition TF.cpp:261
Tensor * rand2(int d0, int d1)
Definition TF.h:66
Tensor * meanAxis(Tensor *a, int axis, int keepDims)
void pushTrace(Func *f)
Definition TF.cpp:73
Tensor * conv1dBias(Tensor *x, Tensor *w, Tensor *bias, int stride, int pad)
Definition TF.cpp:538
Tensor * randomUniform1(int d0)
Definition TF.cpp:212
Tensor * minAxis(Tensor *a, int axis, int keepDims)
Tensor * flatten(Tensor *a)
Definition TF.cpp:428
Tensor * fill2(int d0, int d1, float value)
Definition TF.cpp:158
Tensor * randomUniform4(int d0, int d1, int d2, int d3)
Definition TF.cpp:233
float reduceMax(Tensor *a)
Definition TF.cpp:820
Tensor * concat3(Tensor *a, Tensor *b, Tensor *c, int axis)
Definition TF.cpp:638
Tensor * reshape1(Tensor *a, int d0)
Definition TF.cpp:391
Tensor * randomUniform2(int d0, int d1)
Definition TF.cpp:219
Tensor * sdpa(Tensor *q, Tensor *k, Tensor *v, float scale)
Definition TF.cpp:761
Tensor * rand1(int d0)
Definition TF.h:65
Tensor * sub(Tensor *a, Tensor *b)
~TF() override=default
Tensor * zeros4(int d0, int d1, int d2, int d3)
Definition TF.cpp:116
Tensor * slice(Tensor *a, int axis, int begin, int end)
Definition TF.cpp:689
Tensor * arange(int n)
Definition TF.cpp:176
Tensor * reshape4(Tensor *a, int d0, int d1, int d2, int d3)
Definition TF.cpp:409
Tensor * maximumScalar(Tensor *a, float s)
Definition TF.cpp:337
Tensor * rmsnorm(Tensor *a, float eps)
Definition TF.cpp:507
Tensor * randomUniform3(int d0, int d1, int d2)
Definition TF.cpp:226
Tensor * zeros5(int d0, int d1, int d2, int d3, int d4)
Definition TF.cpp:120
Tensor * randn3(int d0, int d1, int d2)
Definition TF.h:73
Tensor * matmul(Tensor *a, Tensor *b)
Definition TF.cpp:348
Tensor * zeros2(int d0, int d1)
Definition TF.cpp:108
Tensor * sin(Tensor *a)
Func * func()
Definition TF.cpp:95
Tensor * cos(Tensor *a)
Tensor * ones6(int d0, int d1, int d2, int d3, int d4, int d5)
Definition TF.cpp:149
Tensor * sdpaMasked(Tensor *q, Tensor *k, Tensor *v, Tensor *mask, float scale)
Definition TF.cpp:765
Tensor * powScalar(Tensor *a, float exp)
Definition TF.cpp:327
Tensor * reshape6(Tensor *a, int d0, int d1, int d2, int d3, int d4, int d5)
Definition TF.cpp:421
Tensor * reshape3(Tensor *a, int d0, int d1, int d2)
Definition TF.cpp:403
Tensor * div(Tensor *a, Tensor *b)
Tensor * randomNormal2(int d0, int d1)
Definition TF.cpp:247
Tensor * constantScalar(float value)
Definition TF.cpp:171
Tensor * logSoftmax(Tensor *a, int axis)
Definition TF.cpp:467
Tensor * concat4(Tensor *a, Tensor *b, Tensor *c, Tensor *d, int axis)
Definition TF.cpp:643
Tensor * silu(Tensor *a)
Tensor * rmsnormW(Tensor *a, Tensor *scale, float eps)
Definition TF.cpp:520
Tensor * zeros3(int d0, int d1, int d2)
Definition TF.cpp:112
Tensor * conv2dBias(Tensor *x, Tensor *w, Tensor *bias, int stride, int pad)
Definition TF.cpp:557
Tensor * conv2d(Tensor *x, Tensor *w, int stride, int pad)
Definition TF.cpp:553
Tensor * where(Tensor *cond, Tensor *a, Tensor *b)
Definition TF.cpp:435
Tensor * ones4(int d0, int d1, int d2, int d3)
Definition TF.cpp:141
Tensor * permute4(Tensor *a, int a0, int a1, int a2, int a3)
Definition TF.cpp:372
Tensor * ones5(int d0, int d1, int d2, int d3, int d4)
Definition TF.cpp:145
Tensor * permute5(Tensor *a, int a0, int a1, int a2, int a3, int a4)
Definition TF.cpp:378
Tensor * permute6(Tensor *a, int a0, int a1, int a2, int a3, int a4, int a5)
Definition TF.cpp:384
Tensor * mulScalar(Tensor *a, float s)
Definition TF.cpp:317
Tensor * subScalar(Tensor *a, float s)
Definition TF.cpp:312
Func * tracing() const
Definition TF.cpp:91
Tensor * randn1(int d0)
Definition TF.h:71
Tensor * concat2(Tensor *a, Tensor *b, int axis)
Definition TF.cpp:633
Tensor * cast(Tensor *a, const std::string &dtype)
Definition TF.cpp:748
Tensor * fill1(int d0, float value)
Definition TF.cpp:154
Tensor * randomNormal3(int d0, int d1, int d2)
Definition TF.cpp:254
Tensor * permute2(Tensor *a, int a0, int a1)
Definition TF.cpp:360
float32 / int32 tensor (rank 1–6), row-major. Eager: owns a buffer. Symbolic: node in a Func graph (n...
Definition Tensor.h:43