mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 11:13:53 +08:00
* mse err from 0.028070712 -> 5.8073703e-05
* build with weights fixup
* need thneed lib also
* don't break for binaries
* static analysis says i need init
* check the bias
* load_dlc_weights
* nicer scons
* tested scons
* fix static
* pylint issue
* new ref
* a few more asserts
Co-authored-by: Harald Schafer <harald.the.engineer@gmail.com>
old-commit-hash: 8d6f49aecf
32 lines
841 B
Python
32 lines
841 B
Python
import struct, json
|
|
|
|
def load_thneed(fn):
|
|
with open(fn, "rb") as f:
|
|
json_len = struct.unpack("I", f.read(4))[0]
|
|
jdat = json.loads(f.read(json_len).decode('latin_1'))
|
|
weights = f.read()
|
|
ptr = 0
|
|
for o in jdat['objects']:
|
|
if o['needs_load']:
|
|
nptr = ptr + o['size']
|
|
o['data'] = weights[ptr:nptr]
|
|
ptr = nptr
|
|
for o in jdat['binaries']:
|
|
nptr = ptr + o['length']
|
|
o['data'] = weights[ptr:nptr]
|
|
ptr = nptr
|
|
return jdat
|
|
|
|
def save_thneed(jdat, fn):
|
|
new_weights = []
|
|
for o in jdat['objects'] + jdat['binaries']:
|
|
if 'data' in o:
|
|
new_weights.append(o['data'])
|
|
del o['data']
|
|
new_weights = b''.join(new_weights)
|
|
with open(fn, "wb") as f:
|
|
j = json.dumps(jdat, ensure_ascii=False).encode('latin_1')
|
|
f.write(struct.pack("I", len(j)))
|
|
f.write(j)
|
|
f.write(new_weights)
|