68 lines
1.3 KiB
Python
68 lines
1.3 KiB
Python
|
from __future__ import print_function
|
||
|
|
||
|
import os
|
||
|
import sys
|
||
|
import torch
|
||
|
import torch.nn as nn
|
||
|
import torch.nn.functional as F
|
||
|
import torch.optim as optim
|
||
|
import torchvision
|
||
|
from torchvision import datasets, transforms
|
||
|
import torchvision.models as models
|
||
|
import matplotlib.pyplot as plt
|
||
|
import numpy as np
|
||
|
import struct
|
||
|
from struct import Struct
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/"
|
||
|
|
||
|
# resnet50 = models.resnet50(pretrained=True)
|
||
|
# torch.save(resnet50, CurrentPath+'params.pth')
|
||
|
resnet50 = torch.load(CurrentPath+'params.pth')
|
||
|
resnet50.eval()
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
weightfile = open(CurrentPath+'ResNet50Weight.cc', 'r')
|
||
|
binaryfile = open(CurrentPath+'ResNet50Weight.bin', 'rb')
|
||
|
bindata = binaryfile.read()
|
||
|
|
||
|
|
||
|
|
||
|
def toNumpy(start, end):
|
||
|
global bindata
|
||
|
byte = []
|
||
|
for i in range(start,end,4):
|
||
|
byte.append(struct.unpack("f", bindata[i:i+4])[0])
|
||
|
return np.array(byte)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
weight = toNumpy(38656,55039)
|
||
|
inp = toNumpy(125573760,126376575)
|
||
|
outp = toNumpy(126376576,127179391)
|
||
|
|
||
|
m = resnet50.layer1._modules['0'].conv1
|
||
|
|
||
|
weight = weight.reshape(m.weight.shape)
|
||
|
inp = inp.reshape(1, 64, 56, 56,)
|
||
|
outp = outp.reshape( 64, 56, 56,)
|
||
|
|
||
|
|
||
|
m.weight.data = torch.from_numpy(weight)
|
||
|
output = m(torch.from_numpy(inp))
|
||
|
|
||
|
output = output.cpu().detach().numpy()
|
||
|
print(output[0,0,:])
|
||
|
print(outp[0,0,:])
|
||
|
i = 0
|