Hi,
I realize that the optimization objective is the categorical_crossentropy in your code, i.e.,
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']).
However, in my opinion, if we want to train the neural network with the IB, the IB objective should be set as the loss, i.e.,
model.compile(loss='IB_loss ', optimizer='adam', metrics=['accuracy']). Or maybe the IB just acts as a regularizer?
I am confused about it. Could you make an explanation about it? thanks.
Best