Convolutional Layers on a hexagonal grid in Keras
I had a similar problem with a 2D convolution on a hexagonal grid while working on a diffusion problem and stumbled upon this question. Rather than using cube coordinates, you could use doubled coordinates, which I found much easier to save in a 2D array. 

An example kernel that only changes the direct neighbours and the cell itself would be this

kernel = np.array([[0,   0.1, 0,   0.1, 0  ],
                   [0.1, 0,   0.4, 0,   0.1],
                   [0,   0.1, 0,   0.1, 0  ]])


I don't know much about Keras, but I assume that this is possible there as well.