Skip to content

Output scaling question #30

@davidmarttila

Description

@davidmarttila

Hello, thank you for providing this model open source!

I have a question about the output range of the NAP / IHC values. I was expecting the output values to be in the [0, 1] range as mentioned in section 18.3 of Human and Machine Hearing. I understand the values to represent the "probability of firing" for a neuron.

Testing out the numpy and JAX implementations with the default design parameters and some sample input (noise and sines at varying volumes), I am getting different results though. The output seems to have a floor at a specific value of -0.81157 (consistent across different types of input), and have peaks anywhere between 2 and 10 depending on the input signal.

Here is some example code:

sr = 22050
f0 = 300
x = jnp.sin(2 * jnp.pi * f0 * jnp.arange(sr // 10) / sr) * 0.1

params_jax = carfac.CarfacDesignParameters(fs=sr)
hypers_jax, weights_jax, state_jax = carfac.design_and_init_carfac(
    params_jax
)

naps, naps_fibers, state, bm, seg_ohc, seg_agc = carfac.run_segment(x, hypers_jax, weights_jax, state_jax)

fig, ax = plt.subplots(3, 1, figsize=(8, 6), sharex=True)
ax[0].plot(x)
ax[0].set_title('input')

ax[1].imshow(naps.squeeze().T, aspect='auto')
ax[1].set_title('NAP')

ax[2].plot(naps[:, 50])
ax[2].set_title('NAP channel 50')
ax[2].axhline(-0.81157, color='r')
ax[2].grid()
plt.show()

And the output:

Image

Could you help me understand how to interpret these values? Is there some sensible design parameter setting or some post-scaling that I can apply to constrain the output to [0, 1]?

Thanks again and sorry if I'm missing something obvious, I'm very new to working with these models!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions