[ https://issues.apache.org/jira/browse/IGNITE-12849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17073207#comment-17073207 ]
Glenn Wiebe commented on IGNITE-12849: -------------------------------------- I may have overstated the condition of my code, the toString() return seems to throw the BinaryWriterExImpl into a bit of a tizzy! My method: {{{color:#0747a6}public String toString() {{color}}} {{{color:#0747a6} System.out.println("this.getStorage().data() Arrays.toString(): " + Arrays.toString(this.getStorage().data()) );{color}}} {{{color:#0747a6} return Arrays.toString(this.getStorage().data());{color}}} {{{color:#0747a6} }{color}}} Prints this: *{color:#0747a6}{{this.getStorage().data() Arrays.toString(): [96019.0, 401.0, 319.0, 100.0, 0.0, 269.8493104, 163.7630491]}}{color}* But I then get exceptions like this: class org.apache.ignite.binary.BinaryObjectException: Failed to marshal object with optimized marshaller: [96019.0, 401.0, 319.0, 100.0, 0.0, 269.8493104, 163.7630491] at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:211) at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:164) at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:151) at org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObject(BinaryWriterExImpl.java:523) at org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObjectArray(BinaryWriterExImpl.java:773) at org.apache.ignite.internal.binary.BinaryClassDescriptor.write(BinaryClassDescriptor.java:716) ... Caused by: class org.apache.ignite.IgniteCheckedException: Failed to serialize object: [96019.0, 401.0, 319.0, 100.0, 0.0, [269.8493104|tel:2698493104] , [163.7630491|tel:1637630491] ] at org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller.marshal0(OptimizedMarshaller.java:206) at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.marshal(AbstractNodeNameAwareMarshaller.java:56) at org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10575) at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:204) ... 33 more Caused by: [java.io|http://java.io/] .IOException: Externalizable class doesn't have default constructor: class org.apache.ignite.ml.math.primitives.vector.impl.VerboseDenseVector at org.apache.ignite.internal.marshaller.optimized.OptimizedClassDescriptor.<init>(OptimizedClassDescriptor.java:407) at org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor(OptimizedMarshallerUtils.java:209) at org.apache.ignite.internal.marshaller.optimized.OptimizedObjectOutputStream.writeObject0(OptimizedObjectOutputStream.java:200) at org.apache.ignite.internal.marshaller.optimized.OptimizedObjectOutputStream.writeObjectOverride(OptimizedObjectOutputStream.java:158) at [java.io|http://java.io/] .ObjectOutputStream.writeObject(ObjectOutputStream.java:344) at org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller.marshal0(OptimizedMarshaller.java:201) ... 36 more Caused by: java.lang.NoSuchMethodException: org.apache.ignite.ml.math.primitives.vector.impl.VerboseDenseVector.<init>() at java.lang.Class.getConstructor0(Class.java:3082) at java.lang.Class.getDeclaredConstructor(Class.java:2178) at org.apache.ignite.internal.marshaller.optimized.OptimizedClassDescriptor.<init>(OptimizedClassDescriptor.java:402) ... 41 more Do you have any idea on why??? > Add New BinaryObject Vectorizer for SparseVectors and Integer Coordinates > ------------------------------------------------------------------------- > > Key: IGNITE-12849 > URL: https://issues.apache.org/jira/browse/IGNITE-12849 > Project: Ignite > Issue Type: New Feature > Components: ml > Affects Versions: 2.8 > Reporter: Glenn Wiebe > Assignee: Alexey Zinoviev > Priority: Minor > Fix For: 2.9 > > > A. DenseVector-based BinaryObjectVectorizer > When using existing caches as a source of Datasets, the > BinaryObjectVectorizer is used. > The existing BinaryObjectVectorizer only supports the creation of a > SparseVector. > The LUDecomposition utility that supports gaussian factorization for models > like GMM have a "Singularity indicator" for which a SparseVector and its null > handling will set a matrix column calculation to be zero/0.0 which is below > the minimum check value (1e-11) and thus indicate a matrix is not square. > This null handling of the SparseMatrix will restrict the use of some > algorithms like Gaussian Mixture Models where any Vector dimension that is > null will incorrectly signal that a matrix is not square. > It would be great if we could: > - Have a BinaryObjectVectorizer that uses a DenseMatrix to eliminate this > singularity trigger and enable use of GMM Trainer. > B. CacheBasedDatasets not treated as Temporary Cache > When using a cache-based dataset, the close() method destroys the Ignite > cache. This means that there is no ability to re-use the data loaded into > this dataset. > It would be great if we could: > - Not destroy the Ignite Cache holding the dataset on close (of one step in > an ML processing flow) > - Allow for "attaching" to this prior, pre-calculated dataset in subsequent > use. > C. Vector Visibility > Vectors (unlike other value types, e.g. BinaryObjects) are not visible in > standard mechanisms, like the Ignite Web Console, where the toString() method > does not present any information about the embedded vector values. > It would be great if we could: > - have a Vector.toString() method implementation that presented some > information about what is actually in the Vector. > I have implemented the above items and have used them at a customer where I > needed these capabilities (or at least it dramatically reduced the cost and > increased the value of the solution). > It would be great if the community was supportive of this > expansion/improvement of the Ignite ML library. > Thanks, > Glenn -- This message was sent by Atlassian Jira (v8.3.4#803005)