Probably the shape and/or dtype of the array is incompatible with ImageRGBA. You may have to .reshape((N, M, 4)) and set dtype="uint8". There should be errors in JS console giving at least some indication what’s happening. Note also that currently inputs to .image_rgba() are not validated in Python (per [BUG] `Figure.image` not working with "vanilla" Python data structures · Issue #12615 · bokeh/bokeh · GitHub), so bokeh will happily accept arrays in any shape and type regardless if it works in bokehjs or not.
With @mateusz 's answer, I was able to fix my problem:
from skimage import io
# Used float64, so there is no overflow when changing range
image = io.imread(path).astype('float64')
# Fix range between [0,255] and convert to uint8
image = change_range(image)
image = image.astype('uint8')
# Convert to RGBA
image = gray2rgba(image)
# image_rgba seems to accept only uint32 images
image = image.view("uint32").reshape(image.shape[:2])