You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have been trying to implement the material training approach presented in "Learning Radio Environments by Differentiable Ray Tracing" paper but not basing my experiment in Compute_Paths() but instead on Coverage_map() in order to see how well calibration behaves; I have tried to adapt "trainable_materials.py" into Coverage_map() function but i keep getting erros.
Since I'm working with coverage_map() rather than compute_paths(), I understand that ProxyRadioMaterial is not automatically used during ray-object interactions. To resolve this, I followed a hint in your documentation and defined:
scene.radio_material_callable = my_callable
The callable follows the required (object_ids, points) → (eta, scatter, xpd) signature and uses tf.numpy_function internally to map global object_ids to embedding indices via a Python dict (obj_id_to_idx).
Problem:
Although I do see TrainableMaterials.call() being triggered, the execution crashes deep inside solver_cm.py, usually at a scattering or diffraction-related step. The traceback points to tf.numpy_function and reports:
TypeError: unhashable type: 'numpy.ndarray'
Or: only length-1 arrays can be converted to a Python scalar
Or: Outer dimensions of indices and update must match during tensor_scatter_nd_update
I’ve tried:
Using int(i) or i.item() inside the lambda used in tf.numpy_function
Converting ids to .tolist() before indexing
Reshaping tensors before tensor_scatter_nd_update
Wrapping everything with @tf.function and testing in both eager and graph mode
My questions:
Is there an officially recommended way to integrate custom trainable material behavior with coverage_map()? (similar to the one presented in "Learning Radio Environments by Differentiable Ray Tracing" paper.
Is scene.radio_material_callable expected to be used instead of ProxyRadioMaterial, or in addition to?
Are there any internal tools/helpers to map object IDs during graph execution (e.g., tf.lookup)? Or should we modify the source to inject local material indices during ray tracing?
I was wondering if you could point the right direction for me to follow in this implementation or state that this is not suitable for coverage_ma().
(I have already reviewed instant radio maps calibration notebook but for personal purposes, i need the features provided in SIONNA) Validation_SyntheticTruth.txt
Important to mention that i am currently using: Sionna 0.19.2
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Good day!
I have been trying to implement the material training approach presented in "Learning Radio Environments by Differentiable Ray Tracing" paper but not basing my experiment in Compute_Paths() but instead on Coverage_map() in order to see how well calibration behaves; I have tried to adapt "trainable_materials.py" into Coverage_map() function but i keep getting erros.
Since I'm working with coverage_map() rather than compute_paths(), I understand that ProxyRadioMaterial is not automatically used during ray-object interactions. To resolve this, I followed a hint in your documentation and defined:
scene.radio_material_callable = my_callable
The callable follows the required (object_ids, points) → (eta, scatter, xpd) signature and uses tf.numpy_function internally to map global object_ids to embedding indices via a Python dict (obj_id_to_idx).
Problem:
Although I do see TrainableMaterials.call() being triggered, the execution crashes deep inside solver_cm.py, usually at a scattering or diffraction-related step. The traceback points to tf.numpy_function and reports:
I’ve tried:
My questions:
I was wondering if you could point the right direction for me to follow in this implementation or state that this is not suitable for coverage_ma().
(I have already reviewed instant radio maps calibration notebook but for personal purposes, i need the features provided in SIONNA)
Validation_SyntheticTruth.txt
Important to mention that i am currently using: Sionna 0.19.2
Approach:

Source code:
https://github.com/NVlabs/diff-rt-calibration/blob/main/code/trainable_materials.py
Beta Was this translation helpful? Give feedback.
All reactions