微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kotlin中dl4j的通用功能

如何解决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 举报,一经查实,本站将立刻删除。