#python #tensorflow #machine-learning #keras #deep-learning
Вопрос:
def my_loss_fn(y_true, y_pred):
squared_difference = tf.math.abs(y_true - y_pred)
squared_difference=tf.math.reduce_sum(squared_difference,axis=-1)
return tf.reduce_mean(squared_difference, axis=-1)
def create_model():
pretrained_model = tf.keras.applications.MobileNetV2(input_shape=(256,256, 3),include_top=False,weights='imagenet',pooling='max')
pretrained_model.trainable = False
for layer in pretrained_model.layers[len(pretrained_model.layers)-5:]:
layer.trainable = True
inputs = pretrained_model.input
x=tf.keras.layers.Flatten()(pretrained_model.output)
outputs=tf.keras.layers.Dense(8192, activation='relu')(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer='adam',loss=my_loss_fn,metrics=['accuracy'])
return model
Выходной тензор имеет форму (64 8192), где 64-размер пакета. Мне нужно проверить, равно ли положение индекса 16n 0 или нет, если не равно нулю, то вычислите ошибку (только для n, где 16n не было равно нулю) позиций (16n 1,16 n 2,16 n 3……), а затем суммируйте ошибку и возьмите среднее значение для всех 64