海关损失-keras

时间:2019-04-18 14:06:27

标签: keras loss

以下两个模型/编译的行为不同:

$loadDump =   wp_unslash( $_POST['loadDump'] );


      $table_name= $wpdb->prefix. 'product_configurator';
        $DBP_results= $wpdb->get_results("SELECT * FROM $table_name WHERE keymap_key = $loadDump");
        $DBP_current_user = get_current_user_id();


     foreach($DBP_results as $DBP_cols){
        $user_id= $DBP_cols->user_id;
        $enclosure_type= $DBP_cols->enclosure_type;
        $keymap_key= json_decode($DBP_cols->keymap_key, true);
         $key_map_loaded=json_decode($DBP_cols->key_map, true);

          } 



          ?>

并且:

def custom_loss(y_true, y_pred):
  return keras.losses.binary_crossentropy(y_true, y_pred)

optimizer = Adam(lr=5e-3)
model.compile(loss=custom_loss, optimizer=optimizer, metrics=['accuracy'])

可能是什么原因?

1 个答案:

答案 0 :(得分:0)

如果实现自定义二进制交叉熵损失,则还应该指定正确的精度指标。这是因为,如果使用Keras的二进制交叉熵,那么Keras会自动调整要使用的精度度量(在二进制精度和分类精度之间)。

如果使用自定义损失,则不会发生这种情况,然后Keras将默认使用分类精度,这实际上是错误的,会产生不正确的精度值。例如:

model.compile(loss=custom_loss, optimizer=optimizer, metrics=['binary_accuracy'])