def __init__(self, model_id_node, model_cam_dir_node, iterator_input_nodes, blank_id): super(IdAndCameraDirConvLoss, self).__init__( _conv11_to_vector(model_id_node), _conv11_to_vector(model_cam_dir_node), iterator_input_nodes, blank_id)
def make_validation_epoch_callbacks(epoch_logger): loss_monitor = MeanOverEpoch( loss_node, callbacks=[print_validation_loss, SavesH5AtMinimum(model, training_state, basepath + '_best.h5'), SavesAtMinimum(things_to_save, basepath + '_best.pkl')]) epoch_logger.subscribe_to('validation mean loss', loss_monitor) id_loss_monitor = MeanOverEpoch(loss_node.id_loss, callbacks=[]) epoch_logger.subscribe_to('validation cross-entropy', id_loss_monitor) pose_error_monitor = MeanOverEpoch(loss_node.cam_dir_loss, callbacks=[]) epoch_logger.subscribe_to('validation orientation error', pose_error_monitor) # TODO: support NamedTuples for Node.inputs target_id_node = input_nodes[1] assert_equal(target_id_node.output_format.shape, (-1, )) assert_equal(str(target_id_node.output_symbol.dtype), 'int32') misclassification = Misclassification( _conv11_to_vector(model.id_layers[-1]), target_id_node) misclassification_monitor = MeanOverEpoch(misclassification, callbacks=[]) epoch_logger.subscribe_to('validation misclassification', misclassification_monitor) return [id_loss_monitor, pose_error_monitor, misclassification_monitor, loss_monitor]