Extend array interface to handle ndarray. (#7434)
* Extend array interface to handle ndarray. The `ArrayInterface` class is extended to support multi-dim array inputs. Previously this class handles only 2-dim (vector is also matrix). This PR specifies the expected dimension at compile-time and the array interface can perform various checks automatically for input data. Also, adapters like CSR are more rigorous about their input. Lastly, row vector and column vector are handled without intervention from the caller.
This commit is contained in:
@@ -41,9 +41,10 @@ TEST(Adapter, CSRArrayAdapter) {
|
||||
HostDeviceVector<bst_feature_t> indices;
|
||||
size_t n_features = 100, n_samples = 10;
|
||||
RandomDataGenerator{n_samples, n_features, 0.5}.GenerateCSR(&values, &indptr, &indices);
|
||||
auto indptr_arr = MakeArrayInterface(indptr.HostPointer(), indptr.Size());
|
||||
auto values_arr = MakeArrayInterface(values.HostPointer(), values.Size());
|
||||
auto indices_arr = MakeArrayInterface(indices.HostPointer(), indices.Size());
|
||||
using linalg::MakeVec;
|
||||
auto indptr_arr = MakeVec(indptr.HostPointer(), indptr.Size()).ArrayInterfaceStr();
|
||||
auto values_arr = MakeVec(values.HostPointer(), values.Size()).ArrayInterfaceStr();
|
||||
auto indices_arr = MakeVec(indices.HostPointer(), indices.Size()).ArrayInterfaceStr();
|
||||
auto adapter = data::CSRArrayAdapter(
|
||||
StringView{indptr_arr.c_str(), indptr_arr.size()},
|
||||
StringView{values_arr.c_str(), values_arr.size()},
|
||||
|
||||
Reference in New Issue
Block a user