Java Scala分裂码
我正在为一组给定的代码设计一种特定于领域的语言。 我有一个带有以下代码和导入的ExampleMList对象文件Java Scala分裂码,java,scala,oop,Java,Scala,Oop,我正在为一组给定的代码设计一种特定于领域的语言。 我有一个带有以下代码和导入的ExampleMList对象文件 package fr.univ_lille.cristal.emeraude.n2s3.apps import fr.univ_lille.cristal.emeraude.n2s3.core.ConnectionIndex import fr.univ_lille.cristal.emeraude.n2s3.core.actors.Config import fr.univ_lill
package fr.univ_lille.cristal.emeraude.n2s3.apps
import fr.univ_lille.cristal.emeraude.n2s3.core.ConnectionIndex
import fr.univ_lille.cristal.emeraude.n2s3.core.actors.Config
import fr.univ_lille.cristal.emeraude.n2s3.core.models.properties.MembranePotentialThreshold
import fr.univ_lille.cristal.emeraude.n2s3.features.builder.N2S3
import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.types.FullConnection
import fr.univ_lille.cristal.emeraude.n2s3.features.io.input._
import fr.univ_lille.cristal.emeraude.n2s3.features.logging.graph.{SynapticWeightSelectGraph, SynapticWeightSelectGraphRef}
import fr.univ_lille.cristal.emeraude.n2s3.models.neurons.LIF
import fr.univ_lille.cristal.emeraude.n2s3.models.synapses.{InhibitorySynapse, QBGParameters, SimplifiedSTDP}
import fr.univ_lille.cristal.emeraude.n2s3.support.N2S3ResourceManager
import fr.univ_lille.cristal.emeraude.n2s3.support.UnitCast._
import squants.electro.ElectricPotentialConversions.ElectricPotentialConversions
object ExampleMnist extends App {
implicit val timeout = Config.longTimeout
QBGParameters.alf_m = 0.005f
QBGParameters.alf_p = 0.01f
QBGParameters.beta_m = 2f
QBGParameters.beta_p = 2f
val n2s3 = new N2S3("N2S3")
val inputStream = InputMnist.Entry >> SampleToSpikeTrainConverter[Float, InputSample2D[Float]](0, 22, 150 MilliSecond, 350 MilliSecond) >> N2S3Entry
// val inputLayer = n2s3.createInput(Mnist.distributedInput("data/train2k-images.idx3-ubyte", "data/train2k-labels.idx1-ubyte"))
val inputLayer = n2s3.createInput(inputStream)
val dataFile = N2S3ResourceManager.getByName("mnist-train-images").getAbsolutePath
val labelFile = N2S3ResourceManager.getByName("mnist-train-labels").getAbsolutePath
inputStream.append(InputMnist.DataFrom(dataFile, labelFile))
val unsupervisedLayer = n2s3.createNeuronGroup()
.setIdentifier("Layer1")
.setNumberOfNeurons(30)
.setNeuronModel(LIF, Seq(
(MembranePotentialThreshold, 35 millivolts)))
inputLayer.connectTo(unsupervisedLayer, new FullConnection(() => new SimplifiedSTDP))
unsupervisedLayer.connectTo(unsupervisedLayer, new FullConnection(() => new InhibitorySynapse))
n2s3 create()
val inputToClassifierIndex = new ConnectionIndex(inputLayer, unsupervisedLayer)
n2s3.addNetworkObserver(new SynapticWeightSelectGraphRef(
for(outputIndex <- 0 until unsupervisedLayer.shape.getNumberOfPoints) yield {
for(inputX <- 0 until InputMnist.shape.dimensions(0)) yield {
for(inputY <- 0 until InputMnist.shape.dimensions(1)) yield {
val input = inputLayer.getNeuronPathAt(inputX, inputY)
val output = unsupervisedLayer.getNeuronPathAt(outputIndex)
inputToClassifierIndex.getConnectionsBetween(input, output).head
}
}
},
SynapticWeightSelectGraph.heatMap,
4,
100)
)
println("Start Training ...")
n2s3.runAndWait()
val dataTestFile = N2S3ResourceManager.getByName("mnist-test-images").getAbsolutePath
val labelTestFile = N2S3ResourceManager.getByName("mnist-test-labels").getAbsolutePath
inputStream.append(InputMnist.DataFrom(dataTestFile, labelTestFile))
println("Start Testing ...")
unsupervisedLayer.fixNeurons()
val benchmarkMonitor = n2s3.createBenchmarkMonitor(unsupervisedLayer)
n2s3.runAndWait()
println(benchmarkMonitor.getResult.evaluationByMaxSpiking)
benchmarkMonitor.exportToHtmlView("test.html")
n2s3.destroy()
}
现在我想在test
对象文件中创建相同的函数,并在examplemlist
文件中调用它们。
因此,我在测试对象文件中创建了一个定义使用\u Timeout\u值配置\u Actors\u
。因此,在examplemList
文件中,每当我用test替换implicit val timeout=Config.longTimeout
行时,用timeout\u值配置\u Actors\u都可以正常工作,但当我尝试用测试替换QBGParameters部分时,为\u MNIST设置参数时会抛出错误
我知道这是一个简单的问题,但我是Scala的新手,请指导我。我想说写一个好的DSL不是一个简单的任务,你可能想从更基本的东西开始。即使调用test.Configure\u Actors\u和\u Timeout\u值不会编译失败,它也不会做任何事情,因为函数返回Unit
。是的,我可以理解这就是为什么我需要这方面的帮助。
package fr.univ_lille.cristal.emeraude.n2s3.apps
import fr.univ_lille.cristal.emeraude.n2s3.core.actors.Config
import fr.univ_lille.cristal.emeraude.n2s3.models.synapses.{InhibitorySynapse, QBGParameters, SimplifiedSTDP}
object test {
def Configure_Actors_With_Timeout_Value {
implicit val timeout = Config.longTimeout}
def Set_Parameters_for_MNIST =
{
QBGParameters.alf_m = 0.005f
QBGParameters.alf_p = 0.01f
QBGParameters.beta_m = 2f
QBGParameters.beta_p = 2f} **/
}
}