y_true
и y_pred
являются тензорами формы (batchsize, ...[output shape]...)
. Ваш вход имеет форму (64,64,2)
, но я не уверен, как выглядит ваш вывод, если ваш вывод действительно (64,64,2)
, то y_pred
или y_true
имеют форму (64,64,64,2)
, учитывая ваш batchsize=64
.
Работа с Tensors очень похожа на синтаксис numpy, поэтому вы можете использовать нотацию среза с тензорами, например, y_true[:,:,:,0]
(обратите внимание на добавленное измерение пакета).
Tensorflow имеет функции для вычисления DFT, FFT , .. и др c. См. tf.signal и tf.signal.rfft2d
Если ваша функция потерь включает операции на входе, а не только на выходах y_true
и y_pred
, тогда вы можете использовать model.add_loss
вместо model.compile(loss= basic_loss_function)
следующим образом
x = Input(shape=(64,64,2))
y_true = Input(shape=...))
# your CNN layers
y_pred = Dense(128)(net)
model = Model(input=[x, y_true], output=output)
model.add_loss(basic_loss_function(x, y_true, y_pred))
обратите внимание, что метки (также известные как y_true
) теперь являются входными данными для модели.