Thank you for your reply in first place!
In my case I use the default mode min and optimize loss function rather than accuracy, the latter (which is returned from my validate function) is used only for information I print each epoch:
INFO: --------------------
INFO: Epoch 293 completed
INFO: Loss: 1.3087555471597774. Accuracy: 45.57696772695612
INFO: --------------------
INFO: Epoch 294 completed
INFO: Loss: 1.3081310525009235. Accuracy: 45.57696772695612
INFO: --------------------
Epoch   295: reducing learning rate of group 0 to 1.0000e-08.
INFO: Epoch 295 completed
INFO: Loss: 1.3085813283295338. Accuracy: 45.623403761318784
INFO: --------------------
INFO: Epoch 296 completed
INFO: Loss: 1.3085084612997613. Accuracy: 44.78755514279081

And, as far as I can see, my lr is changed when I expect it to be changed (having patience set to 10, after 10 bad epochs it gets reduced by a factor of 0.1 up to smallest one 1e-08, but it seems that I stuck somewhere in a local minimum of loss surface. That said, I suppose my mistake is somewhere around L2 regularisations that are applied in keras Conv2d layers.
As I understood, in Pytorch we need to set weight_decay parameter in our optimizer to achieve the same result, but I’m far from being confident here.