У меня есть входной тензор размера (?, 64, 64) и статическая тензорная маска размера (64, 64).Я хочу, чтобы выходной тензор этой модели имел форму (?, 64, 64), где i-й элемент вывода - это поэлементное умножение i-го элемента ввода и маски.
IМы пытались использовать слой Multiply () в кератах, так как он обеспечивает умножение элементов на элементы, но выводит тензор (64, 64, 64).Теперь я прочитал, что Multiply () ожидает, что тензоры будут одного размера, что объясняет мою проблему.
Затем я подумал, что мог бы создать тензор формы (?, 64, 64), созданный путем конкатенации?копии маски, а затем используйте Multiply ().Однако я не могу создать этот тензор, потому что у меня нет значения?(Я пытаюсь использовать Img.shape [0], но выдает ошибку, так как это NoneType)
Я также решил изменить значения тензорного элемента по элементу примерно так: rFD1 = K.zeros_like (img) rFD1 [:, :: 2, :: 2] = img [:, :: 2, :: 2] Но я получаю сообщение о том, что тензор потока не поддерживает назначение элементов (как это не проблема длялюди?!).
Я читал об этом так много тем, но ни одна из них еще не решила мою проблему.
def MyFunc(img):
rmask = np.zeros([64, 64])
rmask[::2, ::2] = np.ones([32, 32])
rmask = K.variable(rmask)
rFD1 = Multiply()([img, rmask])
return rFD1
img = Input(shape = (64, 64))
x1 = Lambda(MyFunc)(img)
model = Model(input = img, output = x1)
model.summary()
Слой (тип) Выходной параметр Параметр #
input_99 (InputLayer) (Нет, 64, 64) 0
lambda_720 (Lambda) (64, 64,64) 0
Всего параметров: 0 Обучаемые параметры: 0 Необучаемые параметры: 0
Где я ожидаю выходную форму (Нет, 64, 64)