以下两个模型/编译的行为不同:
$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'])
可能是什么原因?
答案 0 :(得分:0)
如果实现自定义二进制交叉熵损失,则还应该指定正确的精度指标。这是因为,如果使用Keras的二进制交叉熵,那么Keras会自动调整要使用的精度度量(在二进制精度和分类精度之间)。
如果使用自定义损失,则不会发生这种情况,然后Keras将默认使用分类精度,这实际上是错误的,会产生不正确的精度值。例如:
model.compile(loss=custom_loss, optimizer=optimizer, metrics=['binary_accuracy'])