import * as tf from "@tensorflow/tfjs";
function TFPolicy() {
const modelRef = useRef<tf.LayersModel | null>(null);
useEffect(() => {
tf.loadLayersModel("/policy/model.json").then(m => { modelRef.current = m; });
}, []);
const policy = usePolicy({
frequency: 50,
onObservation: (model, data) => {
const obs = new Float32Array(48);
// ... fill observation
return obs;
},
onAction: (obs, model, data) => {
if (!modelRef.current) return;
const tensor = tf.tensor2d(obs, [1, obs.length]);
const action = modelRef.current.predict(tensor) as tf.Tensor;
const values = action.dataSync();
for (let i = 0; i < model.nu; i++) data.ctrl[i] = values[i];
tensor.dispose();
action.dispose();
},
});
return <button onClick={policy.start}>Run Policy</button>;
}