2016-01-20 8 views
7

मैं स्पार्क और स्कैला में तंत्रिका नेटवर्क को लागू करने की कोशिश कर रहा हूं लेकिन किसी भी वेक्टर या मैट्रिक्स गुणा करने में असमर्थ हूं। स्पार्क दो वैक्टर प्रदान करते हैं। Spark.util वेक्टर समर्थन डॉट ऑपरेशन लेकिन यह बहिष्कृत है। mllib.linalg वैक्टर स्केल में संचालन का समर्थन नहीं करते हैं।अपाचे स्पार्क mllib.linalg वैक्टर और स्पार्क.टिल वैक्टर के बीच अंतर मशीन सीखने के लिए

वजन और प्रशिक्षण डेटा स्टोर करने के लिए किस का उपयोग करना है?

स्पार्क स्कैला में वेक्टर गुणा करने के लिए कैसे करें wll x के साथ mllib के साथ जहां डब्ल्यू वेक्टर या वजन का मैट्रिक्स है और एक्स इनपुट है। pyspark वेक्टर समर्थन डॉट उत्पाद लेकिन स्केला में मैं वैक्टर

उत्तर

6

में इस तरह के समारोह को खोजने के लिए ठीक है, आप रेखीय बीजगणित ऑपरेटरों आप खुद ही इन लागू करने या एक बाहरी पुस्तकालय का उपयोग करने के लिए एक पूर्ण समर्थन की जरूरत है, तो नहीं पा रहा हूँ। दूसरे मामले में स्पष्ट विकल्प Breeze है।

यह पहले से ही पर्दे के पीछे प्रयोग किया जाता है तो अतिरिक्त निर्भरता परिचय नहीं है और आप आसानी से रूपांतरण के लिए मौजूदा स्पार्क कोड को संशोधित कर सकते हैं:

import breeze.linalg.{DenseVector => BDV, SparseVector => BSV, Vector => BV} 

def toBreeze(v: Vector): BV[Double] = v match { 
    case DenseVector(values) => new BDV[Double](values) 
    case SparseVector(size, indices, values) => { 
    new BSV[Double](indices, values, size) 
    } 
} 

def toSpark(v: BV[Double]) = v match { 
    case v: BDV[Double] => new DenseVector(v.toArray) 
    case v: BSV[Double] => new SparseVector(v.length, v.index, v.data) 
} 

महावत Spark and Scala bindings तुम भी दिलचस्प लगें दिलचस्प प्रदान करता है।

सरल मैट्रिक्स वेक्टर गुणाओं के लिए मौजूदा मैट्रिक्स विधियों का लाभ उठाना आसान हो सकता है। उदाहरण के लिए IndexedRowMatrix और RowMatrixmultiply विधियां प्रदान करें जो स्थानीय मैट्रिक्स ले सकते हैं। उदाहरण उदाहरण के लिए आप Matrix Multiplication in Apache Spark देख सकते हैं।

संबंधित मुद्दे