Toybrick

pytorch -> rknn rk3566 模型 推断结果是一个定值

feelmercy

新手上路

积分
15
发表于 2022-5-5 17:15:26    查看: 233|回复: 0 | [复制链接]    打印 | 显示全部楼层
本帖最后由 feelmercy 于 2022-5-5 17:19 编辑

问题描述:板子是rk3566,在rknn toolkit2 模拟器上,模型推断结果是正确的,不同的值,不同的结果
但是 rknn adb 到rk3566板子,模型推断,不同的值,结果为一定值,试了很多,结果都是定值

很简单的一个模型,就是y=x^2希望能得到解答,先谢谢了!
完整代码如下:

import numpy as np
import cv2
from rknn.api import RKNN
import torchvision.models as models
import torch
import os
from torch import nn,optim

if __name__ == '__main__':
        x=torch.unsqueeze(torch.arange(1,100),dim=1).float()
        y=x.pow(2)
        net=torch.nn.Sequential(nn.Linear(1,128),
                       nn.ReLU(),
                       nn.Linear(128,1))

        optimizer=optim.Adam(net.parameters(),lr=0.01)
        loss_func=nn.MSELoss()
        net.train()
        for t in range(20000):
                predictions=net(x)
                l=loss_func(predictions,y)
                optimizer.zero_grad()
                l.backward()
                optimizer.step()
                if (t+1) %100 ==0 :
                        print('loss : ',l.item())

        net.eval()
        trace_model=torch.jit.trace(net,torch.Tensor(1,1))
        trace_model.save(r'/rknn2/models/test_net17.pt')

        rknn = RKNN(verbose=True)

        print('--> Config model')
        rknn.config()
        print('done')

        input_size_list=[[1,1]]
        print('--> Loading model')
        model=r'/rknn2/models/test_net17.pt'
        ret = rknn.load_pytorch(model=model, input_size_list=input_size_list)
        if ret != 0:
                print('Load model failed!')
                exit(ret)
        print('done')

        print('--> Building model')
        # ret = rknn.build(do_quantization=True,dataset=r'/rknn2/data/data1.txt')
        ret = rknn.build(do_quantization=False)
        if ret != 0:
                print('Build model failed!')
                exit(ret)
        print('done')

        print('--> Export rknn model')
        ret = rknn.export_rknn(r'/rknn2/models/test_net17.rknn')
        if ret != 0:
                print('Export rknn model failed!')
                exit(ret)
        print('done')

        print('--> Init runtime environment')
        ret = rknn.init_runtime(target='rk3566',device_id='10.9.51.82:5555')
        if ret != 0:
                print('Init runtime environment failed!')
                exit(ret)
        print('done')

        #模型推理,预测15的值
        print('--> Running model')
        input_test_data=np.array([[15]],dtype=np.float32)
        outputs = rknn.inference(inputs=[input_test_data])
        print('model inference 15 : ',outputs)
        print('done')
        
        #模型推理,预测18的值
        print('--> Running model')
        input_test_data=np.array([[18]],dtype=np.float32)
        outputs = rknn.inference(inputs=[input_test_data])
        print('model inference 18 : ',outputs)
        print('done')
                运行结果如下,不同值,推理结果一致:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表