MCPcopy Create free account
hub / github.com/AllentDan/LibtorchTutorials / main

Function main

lesson3-BasicModels/main.cpp:11–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9using namespace std;
10
11int main(int argc, char *argv[])
12{
13 //LSTM part
14 auto lstm = LSTM(3, 100, 2,1,true);
15 auto lstm_input = torch::Tensor(torch::linspace(1,15,15)).unsqueeze(1).repeat({1,3}).unsqueeze(0).repeat({4,1,1});//[4,15,3]
16 auto lstm_target = torch::full({4,2},16).to(torch::kFloat);
17 auto optimizer_lstm = torch::optim::Adam(lstm.parameters(),0.003);
18 for(int i=0; i<130;i++){
19 optimizer_lstm.zero_grad();
20 auto out = lstm.forward(lstm_input.to(torch::kFloat));
21 auto loss = torch::mse_loss(out,lstm_target);
22 loss.backward();
23 optimizer_lstm.step();
24 cout<<out;
25 }
26
27
28 //CNN part
29 auto cnn = plainCNN(3,1);
30 auto cnn_input = torch::randint(255,{1,3,224,224});
31 torch::optim::Adam optimizer_cnn(cnn.parameters(), 0.0003);
32 auto cnn_target = torch::zeros({1,1,26,26});
33 for(int i=0; i<30;i++){
34 optimizer_cnn.zero_grad();
35 auto out = cnn.forward(cnn_input);
36 auto loss = torch::mse_loss(out,cnn_target);
37 loss.backward();
38 optimizer_cnn.step();
39 cout<<out[0][0][0];
40 }
41
42 auto mlp = MLP(10,1);
43 auto mlp_input = torch::rand({2,10});
44 auto mlp_target = torch::ones({2,1});
45 torch::optim::Adam optimizer_mlp(mlp.parameters(), 0.0005);
46 for(int i=0; i<400; i++){
47 optimizer_mlp.zero_grad();
48 auto out = mlp.forward(mlp_input);
49 auto loss = torch::mse_loss(out,mlp_target);
50 loss.backward();
51 optimizer_mlp.step();
52 cout<<out;
53 }
54
55 string pt_path = "D:/AllentFiles/code/tmp/resnet34.pt";
56 torch::jit::Module jit_model = torch::jit::load(pt_path);
57 //auto input = torch::zeros({1,3,224,224},torch::kFloat);
58 //auto output = jit_model.forward({input});
59
60 auto model = ConvReluBn(3,4,3);
61 auto input = torch::zeros({1,3,12,12},torch::kFloat);
62 auto input2 = torch::zeros({1,3,12,12},torch::kFloat);
63 auto output = input*input2;
64 output = model->forward(input);
65 std::cout<<output.sizes()<<std::endl;
66 std::cout.flush();
67
68 std::cout<<"Test output";

Callers

nothing calls this directly

Calls 5

LSTMClass · 0.85
plainCNNClass · 0.85
MLPClass · 0.85
forwardMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected