[
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)