Kotlin中dl4j的通用功能

问题描述

我在Kotlin中搞混了dl4j,并试图构建一个泛型函数。基本上,我想采用以下功能

fun NeuralNetConfiguration.ListBuilder.dense(init: DenseLayer.Builder.() -> Unit) {
    this.layer(DenseLayer.Builder().apply(init).build())
}

fun NeuralNetConfiguration.ListBuilder.conv2d(init: ConvolutionLayer.Builder.() -> Unit) {
    this.layer(ConvolutionLayer.Builder().apply(init).build())
}

并将它们概括为一个函数

fun <T> buildLayer(parent: NeuralNetConfiguration.ListBuilder,init: Layer<T>.Builder.() -> Unit) {
    parent.layer(Layer<T>.Builder().apply(init).build())
}

此通用函数应采用NeuralNetConfiguration.ListBuilder对象并应用函数init。在扩展功能中,我想像这样使用buildLayer

fun NeuralNetConfiguration.ListBuilder.dense(init: DenseLayer.Builder.() -> Unit) {
    buildLayer<DenseLayer>(this,init)
}

fun NeuralNetConfiguration.ListBuilder.conv2d(init: ConvolutionLayer.Builder.() -> Unit) {
    buildLayer<ConvolutionLayer>(this,init)
}

不幸的是,我坚持使用正确的通用类型。编译器会引发两个错误

  • 用于签名中的init的构建器:类Builder !>
  • 的一种类型参数
  • 用于正文中的图层:无法创建抽象类的实例

我是Kotlin的新手,而我上一次编写Java的时间太久了。遵循IDE提示使我无处可去。有谁知道如何正确地进行通用键入?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)