Если у вас есть базовый класс A
и производный класс B
, вы можете сделать следующее.
void wantAnA(A myA)
{
// work with myA
}
B derived;
// work with the object "derived"
wantAnA(derived);
Теперь для метода wantAnA
нужна копия derived
, Однако объект derived
не может быть полностью скопирован, так как класс B
может изобретать дополнительные переменные-члены, которые не находятся в его базовом классе A
.
Поэтому, чтобы вызвать wantAnA
, компилятор будет «срезать» все дополнительные члены производного класса. Результатом может быть объект, который вы не хотите создавать, потому что
A
(все особые поведения класс B
теряется). from keras import backend as K
import tensorflow as tf
Nom = tf.constant([-6,4,-8,7,0,5,1,-2], dtype='int32')
DeNom = tf.constant([1,4,5,7,9,0,12,0], dtype='int32')
Ratio = Nom/DeNom
Ratio1 = tf.where(tf.is_inf(Ratio), tf.zeros_like(Ratio), Ratio)
Loss = K.sum(Ratio1)
with tf.Session() as sess:
print (sess.run(Loss))
Вывод:
-5.516666666666667
Разделить тензоры и заменить значения бесконечности в тензоре Ratio
нулями
Ratio1 = tf.where(tf.is_inf(Ratio), tf.zeros_like(Ratio), Ratio)
tf.where
очень похож на np.where