#keras #shapes #tensor #loss-function #loss
Вопрос:
Я реализовал автоэнкодер, который принимает в качестве входных данных реальные изображения, скрытое пространство должно быть черно-белым кодированием состояний этого изображения. (это настольная игра) Я пытаюсь создать новую потерю, используя класс Layer. Я хочу реализовать нулевую потерю подавления. Моя проблема в линии, где происходит нарезка. (строка 7 здесь) Может ли кто-нибудь помочь мне решить проблему нарезки
class Zero_Suppress(Layer):
def __init__(self, rate=1e-2):
super(Zero_Suppress, self).__init__()
self.rate = rate
def call(self, inputs):
loss = K.mean(inputs, axis = [0,1])
loss = K.mean(loss[:, 1:], axis =1)
#loss = K.reshape(loss, (-1,1,1))
self.add_loss(loss * self.rate)
return inputs
Код ошибки, который я получаю:
ValueError: in user code:
min_paper.py:17 call *
loss = K.mean(loss[:, 1:], axis =1)
ValueError: Index out of range using input dim 0; input has only 0 dims for '{{node zero__suppress/strided_slice}} = StridedSlice[Index=DT_INT32, T=DT_FLOAT, begin_mask=1, ellipsis_mask=0, end_mask=3, new_axis_mask=0, shrink_axis_mask=0](zero__suppress/Mean, zero__suppress/strided_slice/stack, zero__suppress/strided_slice/stack_1, zero__suppress/strided_slice/stack_2)' with input shapes: [], [2], [2], [2] and with computed input tensors: input[3] = <1 1>.```