Commit 5cf9bfd4 authored by 宋柯's avatar 宋柯

上传代码

parent 47dd2fd7
# Copyright (c) 2018 by contributors.
# Authour: Chao Ma (mctt90@gmail.com)
#
# This is the root CMakeLists.txt file of the xLearn project, which
# build all subdirectories (packages) in the order of
# inter-package dependence.
#
# you can build the xLearn using the following commands:
#
# $> cd xLearn
# $> mkdir build
# $> cd build
# $> cmake ..
# $> make
#
# Thus you check out the xLearn project and build it in a
# subdirectory ``build". If you want further to install the
# built project, you can type the command:
#
# $> make install
#
project ("xLearn")
cmake_minimum_required(VERSION 2.8)
#-------------------------------------------------------------------------------
# Take almost all warnings;
# Do not generate debug symbols;
# Optimization level 3;
# Using c++11;
# Optimization on architecture
#-------------------------------------------------------------------------------
if(NOT WIN32)
add_definitions("-Wall -Wno-sign-compare -O3 -std=c++11
-march=native -Wno-strict-aliasing -Wno-comment")
else(WIN32)
add_definitions("/WX- /MT")
endif()
#-------------------------------------------------------------------------------
# Declare where our project will be installed.
#-------------------------------------------------------------------------------
set(CMAKE_INSTALL_PREFIX "xLearn")
#-------------------------------------------------------------------------------
# For Mac OSX
#-------------------------------------------------------------------------------
#set(CMAKE_MACOSX_RPATH TRUE)
#-------------------------------------------------------------------------------
# Set include paths and library paths.
#-------------------------------------------------------------------------------
include_directories(
"${PROJECT_SOURCE_DIR}"
"${PROJECT_BINARY_DIR}"
"${PROJECT_SOURCE_DIR}/gtest/include"
)
link_directories(
"${PROJECT_BINARY_DIR}/src/base"
"${PROJECT_BINARY_DIR}/src/data"
"${PROJECT_BINARY_DIR}/src/reader"
"${PROJECT_BINARY_DIR}/src/score"
"${PROJECT_BINARY_DIR}/src/loss"
"${PROJECT_BINARY_DIR}/src/solver"
"${PROJECT_BINARY_DIR}/src/c_api"
)
#-------------------------------------------------------------------------------
# Declare packages in xLearn project.
#-------------------------------------------------------------------------------
add_subdirectory(gtest)
add_subdirectory(demo)
add_subdirectory(scripts)
add_subdirectory(src/base)
add_subdirectory(src/data)
add_subdirectory(src/reader)
add_subdirectory(src/score)
add_subdirectory(src/loss)
add_subdirectory(src/solver)
add_subdirectory(src/distributed)
add_subdirectory(src/c_api)
add_subdirectory(python-package)
#add_subdirectory(R-package)
This diff is collapsed.
# Copy all of the files to R-package
file(COPY "../src/base" DESTINATION "./src/")
file(COPY "../src/c_api" DESTINATION "./src/")
file(COPY "../src/data" DESTINATION "./src/")
file(COPY "../src/loss" DESTINATION "./src/")
file(COPY "../src/reader" DESTINATION "./src/")
file(COPY "../src/score" DESTINATION "./src/")
file(COPY "../src/solver" DESTINATION "./src/")
file(COPY "../R-package/man" DESTINATION "./")
file(COPY "../R-package/R" DESTINATION "./")
file(COPY "../R-package/DESCRIPTION" DESTINATION "./")
file(COPY "../R-package/NAMESPACE" DESTINATION "./")
file(COPY "../R-package/src/.Rhistory" DESTINATION "./src")
file(COPY "../R-package/src/init.cc" DESTINATION "./src")
file(COPY "../R-package/src/Makevars" DESTINATION "./src")
file(COPY "../R-package/src/xlearn_R.cc" DESTINATION "./src")
file(COPY "../R-package/src/xlearn_R.h" DESTINATION "./src")
# Build shared library
add_library(xlearn SHARED ./src/init.cc ./src/xlearn_R.cc
./src/c_api/c_api.cc ./src/c_api/c_api_error.cc
./src/base/logging.cc ./src/base/stringprintf.cc ./src/base/split_string.cc
./src/base/levenshtein_distance.cc ./src/base/timer.cc
./src/data/model_parameters.cc ./src/loss/loss.cc
./src/loss/squared_loss.cc ./src/loss/cross_entropy_loss.cc
./src/loss/metric.cc
./src/reader/parser.cc ./src/reader/file_splitor.cc ./src/reader/reader.cc
./src/score/score_function.cc ./src/score/linear_score.cc ./src/score/fm_score.cc
./src/score/ffm_score.cc
./src/solver/checker.cc ./src/solver/trainer.cc
./src/solver/inference.cc ./src/solver/solver.cc)
# Set properties
set_target_properties(xlearn PROPERTIES PREFIX "")
\ No newline at end of file
Package: xlearn
Title: Large-Scale Machine Learning
Version: 0.4.0
Date: 2017-12-04
Author: Chao Ma <mctt90@gmail.com>, Tong He <hetong007@gmail.com>
Maintainer: Tong He <hetong007@gmail.com>
Description: High Performance, Easy-to-use, and Scalable Machine Learning Package
Depends:
R (>= 3.0.2)
Imports:
Matrix
License: GPL-2
Suggests: testthat, knitr, rmarkdown
VignetteBuilder: knitr
RoxygenNote: 6.0.1
# Generated by roxygen2: do not edit by hand
S3method(predict,xl.model)
export(xlearn)
import(methods)
useDynLib(xlearn, .registration = TRUE)
#
# This file is for the low level reuseable utility functions
# that are not supposed to be visibe to a user.
#
xl.create = function(model) {
if (model %in% c("linear", "fm", "ffm")) {
handle = .Call(XLearnCreate_R, model, PACKAGE = "xlearn")
} else {
stop("Invalid type of model '", model, "'")
}
return(handle)
}
write.data.file = function(path, data, label = NULL) {
if (is.null(label)) {
df = data
} else {
df = data.frame(label, data)
}
write.table(df, file = path, quote = FALSE, sep = "\t",
row.names = FALSE, col.names = FALSE)
}
xl.set.params = function(handle, params) {
n = length(params)
nms = names(params)
list.str = c("task", "metric", "log", "opt")
list.float = c("lambda", "init", "alpha", "beta",
"lambda_1", "lambda_2")
list.int = c("k", "epoch", "fold")
for (i in 1:n) {
key = nms[i]
value = params[[i]]
if (key %in% list.str) {
.Call(XLearnSetStr_R, handle, key, value, PACKAGE = "xlearn")
} else if (key %in% list.float) {
.Call(XLearnSetFloat_R, handle, key, value, PACKAGE = "xlearn")
} else if (key %in% list.int) {
.Call(XLearnSetInt_R, handle, key, value, PACKAGE = "xlearn")
} else {
stop(paste0("invalid parameter '", key, "'"))
}
}
}
# currently only read data from file
xl.set.train = function(handle, data, label) {
tmpf = tempfile()
write.data.file(tmpf, data, label)
.Call(XLearnSetTrain_R, handle, tmpf, PACKAGE = "xlearn")
}
# currently only read data from file
xl.set.validate = function(handle, data, label) {
tmpf = tempfile()
write.data.file(tmpf, data, label)
.Call(XLearnSetValidate_R, handle, tmpf, PACKAGE = "xlearn")
}
# currently only read data from file
xl.set.test = function(handle, data) {
tmpf = tempfile()
write.data.file(tmpf, data)
.Call(XLearnSetValidate_R, handle, tmpf, PACKAGE = "xlearn")
}
# currently only save model to disk
xl.fit = function(handle, model.path) {
.Call(XLearnFit_R, handle, model.path, PACKAGE = "xlearn")
}
# Simple interface for training an xlearn model.
#
#' @rdname xlearn
#' @export
xlearn = function(params = list(), data, label,
type = c("linear", "fm", "ffm"),
validate = NULL, model.path = "./model.out") {
handle = xl.create(type)
xl.set.train(handle, data, label)
if (!is.null(validate)) {
xl.set.validate(handle, validate)
}
xl.set.param(handle, params)
xl.fit(handle, model.path)
return(handle)
}
#' Predict method for xlearn model
#'
#' @rdname xlearn
#' @export
predict.xl.model = function(object, newdata, out.path = "./pred.out") {
handle = object$handle
model.path = object$model.path
.Call(XLearnPredict_R, handle, model.path, out.path, PACKAGE = "xlearn")
pred.val = readLines(out.path)
return(pred.val)
}
# Various imports
#' @import methods
#' @useDynLib xlearn, .registration = TRUE
NULL
The R-package is under developing...
\ No newline at end of file
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/xlearn.R
\name{xlearn}
\alias{xlearn}
\alias{predict.xl.model}
\title{Predict method for xlearn model}
\usage{
xlearn(params = list(), data, label, type = c("linear", "fm", "ffm"),
validate = NULL, model.path = "./model.out")
\method{predict}{xl.model}(object, newdata, out.path = "./pred.out")
}
\description{
Predict method for xlearn model
}
PKG_CPPFLAGS = -I./ -Wno-sign-compare -march=native -Wno-strict-aliasing -Wno-comment -unresolved-symbols=report-all
CXX_STD = CXX11
OBJECTS = ./xlearn_R.o ./init.o
#include <R.h>
#include <Rinternals.h>
#include <stdlib.h> // for NULL
#include <R_ext/Rdynload.h>
/* FIXME:
Check these declarations against the C/Fortran source code.
*/
/* .Call calls */
extern SEXP XLearnCreate_R(SEXP);
extern SEXP XLearnFit_R(SEXP, SEXP);
extern SEXP XLearnPredict_R(SEXP, SEXP, SEXP);
extern SEXP XLearnSetFloat_R(SEXP, SEXP, SEXP);
extern SEXP XLearnSetInt_R(SEXP, SEXP, SEXP);
extern SEXP XLearnSetStr_R(SEXP, SEXP, SEXP);
extern SEXP XLearnSetTrain_R(SEXP, SEXP);
extern SEXP XLearnSetValidate_R(SEXP, SEXP);
static const R_CallMethodDef CallEntries[] = {
{"XLearnCreate_R", (DL_FUNC) &XLearnCreate_R, 1},
{"XLearnFit_R", (DL_FUNC) &XLearnFit_R, 2},
{"XLearnPredict_R", (DL_FUNC) &XLearnPredict_R, 3},
{"XLearnSetFloat_R", (DL_FUNC) &XLearnSetFloat_R, 3},
{"XLearnSetInt_R", (DL_FUNC) &XLearnSetInt_R, 3},
{"XLearnSetStr_R", (DL_FUNC) &XLearnSetStr_R, 3},
{"XLearnSetTrain_R", (DL_FUNC) &XLearnSetTrain_R, 2},
{"XLearnSetValidate_R", (DL_FUNC) &XLearnSetValidate_R, 2},
{NULL, NULL, 0}
};
extern "C" void R_init_xlearn(DllInfo *dll) {
R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
R_useDynamicSymbols(dll, FALSE);
}
\ No newline at end of file
#include "./xlearn_R.h"
/*!
* \brief macro to annotate begin of api
*/
#define R_API_BEGIN() \
GetRNGstate(); \
try {
/*!
* \brief macro to annotate end of api
*/
#define R_API_END() \
} catch(...) { \
PutRNGstate(); \
Rf_error("Error"); \
} \
PutRNGstate();
/*!
* \brief macro to check the call.
*/
#define CHECK_CALL(x) \
if ((x) != 0) { \
Rf_error(XLearnGetLastError()); \
}
// Say hello to user
SEXP XLearnHello_R() {
R_API_BEGIN();
CHECK_CALL(XLearnHello());
R_API_END();
}
void _XLearnFinalizer(SEXP ext) {
R_API_BEGIN();
if (R_ExternalPtrAddr(ext) == NULL) return;
void *r_exptr=R_ExternalPtrAddr(ext);
CHECK_CALL(XLearnHandleFree(&r_exptr));
R_ClearExternalPtr(ext);
R_API_END();
}
// Create xlearn handle
SEXP XLearnCreate_R(SEXP model_type) {
SEXP ret;
XL out;
R_API_BEGIN();
CHECK_CALL(XLearnCreate(CHAR(Rf_asChar(model_type)), &out));
ret = PROTECT(R_MakeExternalPtr(out, R_NilValue, R_NilValue));
R_RegisterCFinalizerEx(ret, _XLearnFinalizer, TRUE);
R_API_END();
UNPROTECT(1);
return ret;
}
// Show the model information
SEXP XLearnShow_R(SEXP out) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnShow(&r_exptr));
R_API_END();
}
// Set file path of the training data
SEXP XLearnSetTrain_R(SEXP out, SEXP train_path) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnSetTrain(&r_exptr,
CHAR(Rf_asChar(train_path))));
R_API_END();
}
// Set file path of the test data
SEXP XLearnSetTest_R(SEXP out, SEXP test_path) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnSetTest(&r_exptr,
CHAR(Rf_asChar(test_path))));
R_API_END();
}
// Set file path of the validation data
SEXP XLearnSetValidate_R(SEXP out, SEXP val_path) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnSetValidate(&r_exptr,
CHAR(Rf_asChar(val_path))));
R_API_END();
}
// Start to train
SEXP XLearnFit_R(SEXP out, SEXP model_path) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnFit(&r_exptr,
CHAR(Rf_asChar(model_path))));
R_API_END();
}
// Cross-validation
SEXP XLearnCV_R(SEXP out) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnCV(&r_exptr));
R_API_END();
}
// Start to predict
SEXP XLearnPredict_R(SEXP out, SEXP model_path, SEXP out_path) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnPredict(&r_exptr,
CHAR(Rf_asChar(model_path)),
CHAR(Rf_asChar(out_path))));
R_API_END();
}
// Set string param
SEXP XLearnSetStr_R(SEXP out, SEXP key, SEXP value) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnSetStr(&r_exptr,
CHAR(Rf_asChar(key)),
CHAR(Rf_asChar(value))));
R_API_END();
}
// Set int param
SEXP XLearnSetInt_R(SEXP out, SEXP key, SEXP value) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnSetInt(&r_exptr,
CHAR(Rf_asChar(key)),
Rf_asInteger(value)));
R_API_END();
}
// Set float param
SEXP XLearnSetFloat_R(SEXP out, SEXP key, SEXP value) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnSetFloat(&r_exptr,
CHAR(Rf_asChar(key)),
Rf_asReal(value)));
R_API_END();
}
// Set bool param
SEXP XLearnSetBool_R(SEXP out, SEXP key, SEXP value) {
R_API_BEGIN();
void *r_exptr=R_ExternalPtrAddr(out);
CHECK_CALL(XLearnSetBool(&r_exptr,
CHAR(Rf_asChar(key)),
Rf_asLogical(value)));
R_API_END();
}
#ifndef XLearn_R_H_
#define XLearn_R_H_
#define R_NO_REMAP
#include <Rinternals.h>
#include <stdlib.h> // for NULL
#include <R_ext/Rdynload.h>
#include <R_ext/Random.h>
#include <src/c_api/c_api.h>
#include <src/c_api/c_api_error.h>
// Create xlearn handle
XL_DLL SEXP XLearnCreate_R(SEXP model_type, SEXP out);
// Free the xLearn handle
XL_DLL SEXP XLearnHandleFree_R(SEXP out);
// Show the model information
XL_DLL SEXP XLearnShow_R(SEXP out);
// Set file path of the training data
XL_DLL SEXP XLearnSetTrain_R(SEXP out, SEXP train_path);
// Set file path of the test data
XL_DLL SEXP XLearnSetTest_R(SEXP out, SEXP test_path);
// Set file path of the validation data
XL_DLL SEXP XLearnSetValidate_R(SEXP out, SEXP val_path);
// Start to train
XL_DLL SEXP XLearnFit_R(SEXP out, SEXP model_path);
// Cross-validation
XL_DLL SEXP XLearnCV_R(SEXP out);
// Start to predict
XL_DLL SEXP XLearnPredict_R(SEXP out, SEXP model_path, SEXP out_path);
// Set string param
XL_DLL SEXP XLearnSetStr_R(SEXP out, SEXP key, SEXP value);
// Set param
XL_DLL SEXP XLearnSetInt_R(SEXP out, SEXP key, SEXP value);
// Set float param
XL_DLL SEXP XLearnSetFloat_R(SEXP out, SEXP key, SEXP value);
// Set bool param
XL_DLL SEXP XLearnSetBool_R(SEXP out, SEXP key, SEXP value);
#endif
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/xlearn_logo.png" width = "400"/>
[![Hex.pm](https://img.shields.io/hexpm/l/plug.svg)](./LICENCE)
[![Project Status](https://img.shields.io/badge/version-0.4.4-green.svg)]()
## What is xLearn?
xLearn is a ***high performance***, ***easy-to-use***, and ***scalable*** machine learning package that contains linear model (LR), factorization machines (FM), and field-aware factorization machines (FFM), all of which can be used to solve large-scale machine learning problems. xLearn is especially useful for solving machine learning problems on large-scale sparse data. Many real world datasets deal with high dimensional sparse feature vectors like a recommendation system where the number of categories and users is on the order of millions. In that case, if you are the user of liblinear, libfm, and libffm, now xLearn is your another better choice.
[Get Started! (English)](http://xlearn-doc.readthedocs.io/en/latest/index.html)
[Get Started! (中文)](http://xlearn-doc-cn.readthedocs.io/en/latest/index.html)
### Performance
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/speed.png" width = "800"/>
xLearn is developed by high-performance C++ code with careful design and optimizations. Our system is designed to maximize CPU and memory utilization, provide cache-aware computation, and support lock-free learning. By combining these insights, xLearn is 5x-13x faster compared to similar systems.
### Ease-of-use
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/code.png" width = "600"/>
xLearn does not rely on any third-party library and users can just clone the code and compile it by using cmake. Also, xLearn supports very simple Python and CLI interface for data scientists, and it also offers many useful features that have been widely used in machine learning and data mining competitions, such as cross-validation, early-stop, etc.
### Scalability
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/scalability.png" width = "650"/>
xLearn can be used for solving large-scale machine learning problems. First, xLearn supports out-of-core training, which can handle very large data (TB) by just leveraging the disk of a PC. In addition, xLearn supports distributed training, which scales beyond billions of example across many machines by using the Parameter Server framework.
## How to Contribute
xLearn has been developed and used by many active community members. Your help is very valuable to make it better for everyone.
* Please contribute if you find any bug in xLearn.
* Contribute new features you want to see in xLearn.
* Contribute to the tests to make it more reliable.
* Contribute to the documents to make it clearer for everyone.
* Contribute to the examples to share your experience with other users.
* Open issue if you met problems during development.
Note that, please post iusse and contribution in *English* so that everyone can get help from them.
### Contributors (rank randomly)
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/10520307.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/11278017.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/1289856.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/13925796.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/15322665.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/1842965.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/21072881.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/22660103.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/2387719.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/25626965.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/3086744.png" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/3928409.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/4606937.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/6054101.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/6161143.png" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/7145046.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/7608904.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/27916175.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/7608904.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/1443518.png" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/9783213.png" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/4609798.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/11628637.png" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/1726448.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/32598525.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/3285618.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/8625634.jpeg" width = "40"/><img src="https://github.com/aksnzhy/xLearn/raw/master/img/11938898.png" width = "40"/>
## For Enterprise Users and Call for Sponsors
If you are enterprise users and find xLearn is useful in your work, please let us know, and we are glad to add your company logo here. We also welcome you become a sponsor to make this project better.
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/tencent.png" width = "200"/>
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/stategrid.jpg" width = "200"/>
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/xiaodaka.png" width = "200"/>
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/beikezhaofang.png" width = "200"/>
## What's New
- 2019-10-13 [Andrew Kane](https://github.com/ankane) add [Ruby bindings](https://github.com/ankane/xlearn) for xLearn!
- 2019-4-25 xLearn 0.4.4 version release. Main update:
* Support Python DMatrix
* Better Windows support
* Fix bugs in previous version
- 2019-3-25 xLearn 0.4.3 version release. Main update:
* Fix bugs in previous version
- 2019-3-12 xLearn 0.4.2 version release. Main update:
* Release Windows version of xLearn
- 2019-1-30 xLearn 0.4.1 version release. Main update:
* More flexible data reader
- 2018-11-22 xLearn 0.4.0 version release. Main update:
* Fix bugs in previous version
* Add online learning for xLearn
- 2018-11-10 xLearn 0.3.8 version release. Main update:
* Fix bugs in previous version.
* Update early-stop mechanism.
- 2018-11-08. xLearn gets 2000 star! Congs!
- 2018-10-29 xLearn 0.3.7 version release. Main update:
* Add incremental Reader, which can save 50% memory cost.
- 2018-10-22 xLearn 0.3.5 version release. Main update:
* Fix bugs in 0.3.4.
- 2018-10-21 xLearn 0.3.4 version release. Main update:
* Fix bugs in on-disk training.
* Support new file format.
- 2018-10-14 xLearn 0.3.3 version release. Main update:
* Fix segmentation fault in prediction task.
* Update early-stop meachnism.
- 2018-09-21 xLearn 0.3.2 version release. Main update:
* Fix bugs in previous version
* New TXT format for model output
- 2018-09-08 xLearn uses the new logo:
<img src="https://github.com/aksnzhy/xLearn/raw/master/img/xlearn_logo.png" width = "300"/>
- 2018-09-07 The [Chinese document](http://xlearn-doc-cn.readthedocs.io/en/latest/index.html) is available now!
- 2018-03-08 xLearn 0.3.0 version release. Main update:
* Fix bugs in previous version
* Solved the memory leak problem for on-disk learning
* Support TXT model checkpoint
* Support Scikit-Learn API
- 2017-12-18 xLearn 0.2.0 version release. Main update:
* Fix bugs in previous version
* Support pip installation
* New Documents
* Faster FTRL algorithm
- 2017-11-24 The first version (0.1.0) of xLearn release !
version: '0.4.4.{build}'
image: Visual Studio 2017
build_script:
- cmd: mkdir build_win
- cmd: cd build_win
- cmd: cmake -G "Visual Studio 15 Win64" ../
- cmd: MSBuild xLearn.sln /p:Configuration=Release
- cmd: cd python-package
- cmd: C:\Python36-x64\Scripts\pip install wheel cython
- cmd: C:\Python36-x64\python.exe setup.py bdist_wheel --universal --plat-name win_amd64
test_script:
- cmd: cd ..\test
- cmd: .\run_all_test.bat
- cmd: cd ..\python-package\test
- cmd: dir /b ..\dist\*.whl>whlname
- cmd: set/p pkage=<whlname
- cmd: set pkagepath=..\dist\%pkage%
- cmd: C:\Python27-x64\Scripts\pip install %pkagepath%
- cmd: C:\Python27-x64\Scripts\pip install wheel scikit-learn cython
- cmd: C:\Python27-x64\python.exe test_data_conversion.py
- cmd: C:\Python27-x64\python.exe test_python.py
- cmd: C:\Python37-x64\Scripts\pip install %pkagepath%
- cmd: C:\Python37-x64\Scripts\pip install wheel scikit-learn cython
- cmd: C:\Python37-x64\python.exe test_data_conversion.py
- cmd: C:\Python37-x64\python.exe test_python.py
- cmd: C:\Python36-x64\Scripts\pip install %pkagepath%
- cmd: C:\Python36-x64\Scripts\pip install wheel scikit-learn cython
- cmd: C:\Python36-x64\python.exe test_data_conversion.py
- cmd: C:\Python36-x64\python.exe test_python.py
- cmd: C:\Python35-x64\Scripts\pip install %pkagepath%
- cmd: C:\Python35-x64\Scripts\pip install wheel scikit-learn cython
- cmd: C:\Python35-x64\python.exe test_data_conversion.py
- cmd: C:\Python35-x64\python.exe test_python.py
- cmd: set VS100COMNTOOLS=%VS140COMNTOOLS%
- cmd: C:\Python34-x64\Scripts\pip install %pkagepath%
- cmd: C:\Python34-x64\Scripts\pip install --upgrade setuptools
- cmd: C:\Python34-x64\Scripts\pip install wheel scikit-learn cython
- cmd: C:\Python34-x64\python.exe test_data_conversion.py
- cmd: C:\Python34-x64\python.exe test_python.py
artifacts:
- path: build_win\Release\*.exe
name: Bits
- path: build_win\python-package\dist\*.whl
name: Bits
#! /bin/bash
mkdir build
cd build
cmake ..
make
# install python package
cd python-package
if command -v python2; then
sudo python2 setup.py install
fi
@echo off
mkdir build && cd build && ^
cmake -G "Visual Studio 15 Win64" ../ && "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 && ^
MSBuild xLearn.sln /p:Configuration=Release && ^
cd python-package && ^
python setup.py install
\ No newline at end of file
#!/bin/bash
mkdir build
cd build
cmake ..
make
# install python package
cd python-package
if command -v python2; then
python2 setup.py install
fi
if command -v python3; then
python3 setup.py install
fi
This diff is collapsed.
set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "AppleClang")
set(CMAKE_C_COMPILER_VERSION "10.0.1.10010046")
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
set(CMAKE_C_COMPILER_WRAPPER "")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
set(CMAKE_C_PLATFORM_ID "Darwin")
set(CMAKE_C_SIMULATE_ID "")
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_C_SIMULATE_VERSION "")
set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar")
set(CMAKE_C_COMPILER_AR "")
set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib")
set(CMAKE_C_COMPILER_RANLIB "")
set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCC )
set(CMAKE_C_COMPILER_LOADED 1)
set(CMAKE_C_COMPILER_WORKS TRUE)
set(CMAKE_C_ABI_COMPILED TRUE)
set(CMAKE_COMPILER_IS_MINGW )
set(CMAKE_COMPILER_IS_CYGWIN )
if(CMAKE_COMPILER_IS_CYGWIN)
set(CYGWIN 1)
set(UNIX 1)
endif()
set(CMAKE_C_COMPILER_ENV_VAR "CC")
if(CMAKE_COMPILER_IS_MINGW)
set(MINGW 1)
endif()
set(CMAKE_C_COMPILER_ID_RUN 1)
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_C_LINKER_PREFERENCE 10)
# Save compiler ABI information.
set(CMAKE_C_SIZEOF_DATA_PTR "8")
set(CMAKE_C_COMPILER_ABI "")
set(CMAKE_C_LIBRARY_ARCHITECTURE "")
if(CMAKE_C_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_C_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
endif()
if(CMAKE_C_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/10.0.1/include;/Library/Developer/CommandLineTools/usr/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks")
set(CMAKE_CXX_COMPILER "/Library/Developer/CommandLineTools/usr/bin/c++")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "AppleClang")
set(CMAKE_CXX_COMPILER_VERSION "10.0.1.10010046")
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
set(CMAKE_CXX_COMPILER_WRAPPER "")
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98")
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20")
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
set(CMAKE_CXX_PLATFORM_ID "Darwin")
set(CMAKE_CXX_SIMULATE_ID "")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar")
set(CMAKE_CXX_COMPILER_AR "")
set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib")
set(CMAKE_CXX_COMPILER_RANLIB "")
set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCXX )
set(CMAKE_CXX_COMPILER_LOADED 1)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_CXX_ABI_COMPILED TRUE)
set(CMAKE_COMPILER_IS_MINGW )
set(CMAKE_COMPILER_IS_CYGWIN )
if(CMAKE_COMPILER_IS_CYGWIN)
set(CYGWIN 1)
set(UNIX 1)
endif()
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
if(CMAKE_COMPILER_IS_MINGW)
set(MINGW 1)
endif()
set(CMAKE_CXX_COMPILER_ID_RUN 1)
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
foreach (lang C OBJC OBJCXX)
if (CMAKE_${lang}_COMPILER_ID_RUN)
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
endforeach()
endif()
endforeach()
set(CMAKE_CXX_LINKER_PREFERENCE 30)
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
# Save compiler ABI information.
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
set(CMAKE_CXX_COMPILER_ABI "")
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
if(CMAKE_CXX_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_CXX_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
endif()
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/include/c++/v1;/Library/Developer/CommandLineTools/usr/lib/clang/10.0.1/include;/Library/Developer/CommandLineTools/usr/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks")
set(CMAKE_HOST_SYSTEM "Darwin-18.7.0")
set(CMAKE_HOST_SYSTEM_NAME "Darwin")
set(CMAKE_HOST_SYSTEM_VERSION "18.7.0")
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_SYSTEM "Darwin-18.7.0")
set(CMAKE_SYSTEM_NAME "Darwin")
set(CMAKE_SYSTEM_VERSION "18.7.0")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_CROSSCOMPILING "FALSE")
set(CMAKE_SYSTEM_LOADED 1)
This diff is collapsed.
This diff is collapsed.
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.17
# Relative path conversion top directories.
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/edz/xlearn")
set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/edz/xlearn/build")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
# The C and CXX include file regular expressions for this directory.
set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
This diff is collapsed.
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.17
# The generator used is:
set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
# The top level Makefile was generated from the following files:
set(CMAKE_MAKEFILE_DEPENDS
"CMakeCache.txt"
"../CMakeLists.txt"
"CMakeFiles/3.17.3/CMakeCCompiler.cmake"
"CMakeFiles/3.17.3/CMakeCXXCompiler.cmake"
"CMakeFiles/3.17.3/CMakeSystem.cmake"
"../demo/CMakeLists.txt"
"../gtest/CMakeLists.txt"
"../gtest/cmake/internal_utils.cmake"
"../python-package/CMakeLists.txt"
"../scripts/CMakeLists.txt"
"../src/base/CMakeLists.txt"
"../src/c_api/CMakeLists.txt"
"../src/data/CMakeLists.txt"
"../src/distributed/CMakeLists.txt"
"../src/loss/CMakeLists.txt"
"../src/reader/CMakeLists.txt"
"../src/score/CMakeLists.txt"
"../src/solver/CMakeLists.txt"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeCInformation.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeCXXInformation.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeCommonLanguageInclude.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeGenericSystem.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeInitializeConfigs.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeLanguageInformation.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeSystemSpecificInformation.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CheckCSourceCompiles.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CheckIncludeFile.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/CheckLibraryExists.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Compiler/AppleClang-C.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Compiler/AppleClang-CXX.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Compiler/Clang.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Compiler/GNU.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/FindPackageMessage.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/FindPythonInterp.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/FindThreads.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Internal/CMakeCheckCompilerFlag.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/Apple-AppleClang-CXX.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/Apple-Clang-C.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/Apple-Clang-CXX.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/Apple-Clang.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/Darwin-Initialize.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/Darwin.cmake"
"/usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/Platform/UnixPaths.cmake"
)
# The corresponding makefile is:
set(CMAKE_MAKEFILE_OUTPUTS
"Makefile"
"CMakeFiles/cmake.check_cache"
)
# Byproducts of CMake generate step:
set(CMAKE_MAKEFILE_PRODUCTS
"CMakeFiles/CMakeDirectoryInformation.cmake"
"gtest/CMakeFiles/CMakeDirectoryInformation.cmake"
"demo/CMakeFiles/CMakeDirectoryInformation.cmake"
"scripts/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/base/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/data/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/reader/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/score/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/loss/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/solver/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/distributed/CMakeFiles/CMakeDirectoryInformation.cmake"
"src/c_api/CMakeFiles/CMakeDirectoryInformation.cmake"
"python-package/CMakeFiles/CMakeDirectoryInformation.cmake"
)
# Dependency information for all targets:
set(CMAKE_DEPEND_INFO_FILES
"gtest/CMakeFiles/gtest_main.dir/DependInfo.cmake"
"gtest/CMakeFiles/gtest.dir/DependInfo.cmake"
"src/base/CMakeFiles/levenshtein_distance_test.dir/DependInfo.cmake"
"src/base/CMakeFiles/thread_pool_test.dir/DependInfo.cmake"
"src/base/CMakeFiles/file_util_test.dir/DependInfo.cmake"
"src/base/CMakeFiles/base.dir/DependInfo.cmake"
"src/data/CMakeFiles/data_structure_test.dir/DependInfo.cmake"
"src/data/CMakeFiles/data.dir/DependInfo.cmake"
"src/data/CMakeFiles/model_parameters_test.dir/DependInfo.cmake"
"src/reader/CMakeFiles/file_splitor_test.dir/DependInfo.cmake"
"src/reader/CMakeFiles/reader_test.dir/DependInfo.cmake"
"src/reader/CMakeFiles/parser_test.dir/DependInfo.cmake"
"src/reader/CMakeFiles/reader.dir/DependInfo.cmake"
"src/score/CMakeFiles/ffm_score_test.dir/DependInfo.cmake"
"src/score/CMakeFiles/fm_score_test.dir/DependInfo.cmake"
"src/score/CMakeFiles/linear_score_test.dir/DependInfo.cmake"
"src/score/CMakeFiles/score_function_test.dir/DependInfo.cmake"
"src/score/CMakeFiles/score.dir/DependInfo.cmake"
"src/loss/CMakeFiles/cross_entropy_loss_test.dir/DependInfo.cmake"
"src/loss/CMakeFiles/metric_test.dir/DependInfo.cmake"
"src/loss/CMakeFiles/loss.dir/DependInfo.cmake"
"src/loss/CMakeFiles/squared_loss_test.dir/DependInfo.cmake"
"src/loss/CMakeFiles/loss_test.dir/DependInfo.cmake"
"src/solver/CMakeFiles/xlearn_predict.dir/DependInfo.cmake"
"src/solver/CMakeFiles/xlearn_train.dir/DependInfo.cmake"
"src/solver/CMakeFiles/solver.dir/DependInfo.cmake"
"src/distributed/CMakeFiles/parameter_server_test.dir/DependInfo.cmake"
"src/distributed/CMakeFiles/distributed.dir/DependInfo.cmake"
"src/c_api/CMakeFiles/c_api_test.dir/DependInfo.cmake"
"src/c_api/CMakeFiles/xlearn_api_shared.dir/DependInfo.cmake"
"src/c_api/CMakeFiles/xlearn_api.dir/DependInfo.cmake"
)
This diff is collapsed.
/Users/edz/xlearn/build/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/CMakeFiles/install.dir
/Users/edz/xlearn/build/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/install.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/gtest_main.dir
/Users/edz/xlearn/build/gtest/CMakeFiles/gtest.dir
/Users/edz/xlearn/build/demo/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/demo/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/demo/CMakeFiles/install.dir
/Users/edz/xlearn/build/demo/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/demo/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/demo/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/scripts/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/scripts/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/scripts/CMakeFiles/install.dir
/Users/edz/xlearn/build/scripts/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/scripts/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/scripts/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/levenshtein_distance_test.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/thread_pool_test.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/file_util_test.dir
/Users/edz/xlearn/build/src/base/CMakeFiles/base.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/data_structure_test.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/data.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/data/CMakeFiles/model_parameters_test.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/file_splitor_test.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/reader_test.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/parser_test.dir
/Users/edz/xlearn/build/src/reader/CMakeFiles/reader.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/ffm_score_test.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/fm_score_test.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/linear_score_test.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/score_function_test.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/score/CMakeFiles/score.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/cross_entropy_loss_test.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/metric_test.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/loss.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/squared_loss_test.dir
/Users/edz/xlearn/build/src/loss/CMakeFiles/loss_test.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/xlearn_predict.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/xlearn_train.dir
/Users/edz/xlearn/build/src/solver/CMakeFiles/solver.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/parameter_server_test.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/distributed/CMakeFiles/distributed.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/install.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/c_api_test.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/edit_cache.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/xlearn_api_shared.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/src/c_api/CMakeFiles/xlearn_api.dir
/Users/edz/xlearn/build/python-package/CMakeFiles/install/local.dir
/Users/edz/xlearn/build/python-package/CMakeFiles/install/strip.dir
/Users/edz/xlearn/build/python-package/CMakeFiles/install.dir
/Users/edz/xlearn/build/python-package/CMakeFiles/list_install_components.dir
/Users/edz/xlearn/build/python-package/CMakeFiles/rebuild_cache.dir
/Users/edz/xlearn/build/python-package/CMakeFiles/edit_cache.dir
# This file is generated by cmake for dependency checking of the CMakeCache.txt file
This diff is collapsed.
# Install script for directory: /Users/edz/xlearn
# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "xLearn")
endif()
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
# Set the install configuration name.
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
if(BUILD_TYPE)
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
else()
set(CMAKE_INSTALL_CONFIG_NAME "")
endif()
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif()
# Set the component getting installed.
if(NOT CMAKE_INSTALL_COMPONENT)
if(COMPONENT)
message(STATUS "Install component: \"${COMPONENT}\"")
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
else()
set(CMAKE_INSTALL_COMPONENT)
endif()
endif()
# Is this installation the result of a crosscompile?
if(NOT DEFINED CMAKE_CROSSCOMPILING)
set(CMAKE_CROSSCOMPILING "FALSE")
endif()
if(NOT CMAKE_INSTALL_LOCAL_ONLY)
# Include the install script for each subdirectory.
include("/Users/edz/xlearn/build/gtest/cmake_install.cmake")
include("/Users/edz/xlearn/build/demo/cmake_install.cmake")
include("/Users/edz/xlearn/build/scripts/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/base/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/data/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/reader/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/score/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/loss/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/solver/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/distributed/cmake_install.cmake")
include("/Users/edz/xlearn/build/src/c_api/cmake_install.cmake")
include("/Users/edz/xlearn/build/python-package/cmake_install.cmake")
endif()
if(CMAKE_INSTALL_COMPONENT)
set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
else()
set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
endif()
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
"${CMAKE_INSTALL_MANIFEST_FILES}")
file(WRITE "/Users/edz/xlearn/build/${CMAKE_INSTALL_MANIFEST}"
"${CMAKE_INSTALL_MANIFEST_CONTENT}")
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.17
# Relative path conversion top directories.
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/edz/xlearn")
set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/edz/xlearn/build")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
# The C and CXX include file regular expressions for this directory.
set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
This diff is collapsed.
# Install script for directory: /Users/edz/xlearn/demo
# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "xLearn")
endif()
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
# Set the install configuration name.
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
if(BUILD_TYPE)
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
else()
set(CMAKE_INSTALL_CONFIG_NAME "")
endif()
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif()
# Set the component getting installed.
if(NOT CMAKE_INSTALL_COMPONENT)
if(COMPONENT)
message(STATUS "Install component: \"${COMPONENT}\"")
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
else()
set(CMAKE_INSTALL_COMPONENT)
endif()
endif()
# Is this installation the result of a crosscompile?
if(NOT DEFINED CMAKE_CROSSCOMPILING)
set(CMAKE_CROSSCOMPILING "FALSE")
endif()
# Copyright (c) 2018 by contributors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import xlearn as xl
# Training task
ffm_model = xl.create_ffm() # Use field-aware factorization machine
ffm_model.setTrain("./small_train.txt") # Training data
ffm_model.setValidate("./small_test.txt") # Validation data
# param:
# 0. binary classification
# 1. learning rate: 0.2
# 2. regular lambda: 0.002
# 3. evaluation metric: accuracy
param = {'task':'binary', 'lr':0.2,
'lambda':0.002, 'metric':'acc'}
# Start to train
# The trained model will be stored in model.out
ffm_model.fit(param, './model.out')
# Prediction task
ffm_model.setTest("./small_test.txt") # Test data
ffm_model.setSigmoid() # Convert output to 0-1
# Start to predict
# The output result will be stored in output.txt
ffm_model.predict("./model.out", "./output.txt")
\ No newline at end of file
# Copyright (c) 2018 by contributors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Training task:
# -s : 2 (use ffm for classification)
# -x : acc (use accuracy metric)
# The model will be stored in small_train.txt.model
../../xlearn_train ./small_train.txt -s 2 -v ./small_test.txt -x acc
# Prediction task:
# The output result will be stored in small_test.txt.out
../../xlearn_predict ./small_test.txt ./small_train.txt.model
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# Copyright (c) 2018 by contributors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import xlearn as xl
# Training task
linear_model = xl.create_linear() # Use linear model
linear_model.setTrain("./higgs-train.csv") # Training data
linear_model.setValidate("./higgs-test.csv") # Validation data
# param:
# 0. binary classification
# 1. learning rate: 0.2
# 2. regular lambda: 0.002
# 3. evaluation metric: accuracy
param = {'task':'binary', 'lr':0.2,
'lambda':0.002, 'metric':'acc'}
# Start to train
# The trained model will be stored in model.out
linear_model.fit(param, './model.out')
# Prediction task
linear_model.setTest("./higgs-test.csv") # Test data
linear_model.setSigmoid() # Convert output to 0-1
# Start to predict
# The output result will be stored in output.txt
linear_model.predict("./model.out", "./output.txt")
\ No newline at end of file
# Copyright (c) 2018 by contributors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Training task:
# -s : 0 (use LR for classification)
# -x : acc (use accuracy metric)
# The model will be stored in higgs-train.csv.model
../../xlearn_train ./higgs-train.csv -s 0 -v ./higgs-test.csv -x acc
# Prediction task:
# The output result will be stored in higgs-test.csv.out
../../xlearn_predict ./higgs-test.csv ./higgs-train.csv.model
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment