gpt4 book ai didi

ios - 在 Core ML 上具有两个参数函数的自定义层

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:44 24 4
gpt4 key购买 nike

感谢这篇很棒的文章(http://machinethink.net/blog/coreml-custom-layers/),我了解了如何使用 coremltools 和 Lambda 以及 Keras 自定义层编写转换。但是,我无法理解带有两个参数的函数的情况。

#python
def scaling(x, scale):
return x * scale

Keras 层在这里。

#python
up = conv2d_bn(mixed,
K.int_shape(x)[channel_axis],
1,
activation=None,
use_bias=True,
name=name_fmt('Conv2d_1x1'))
x = Lambda(scaling, # HERE !!
output_shape=K.int_shape(up)[1:],
arguments={'scale': scale})(up)
x = add([x, up])

在这种情况下,如何在 Swift 的 自定义 MLCustomLayer 类 中编写 func evaluate(inputs: [MLMultiArray], outputs: [MLMultiArray]) ?我理解的只是在一个参数函数的情况下,像这样,

#swift 
func evaluate(inputs: [MLMultiArray], outputs: [MLMultiArray]) throws {
for i in 0..<inputs.count {
let input = inputs[i]
let output = outputs[i]

for j in 0..<input.count {
let x = input[j].floatValue
let y = x / (1 + exp(-x))
output[j] = NSNumber(value: y)
}
}
}

两个参数函数怎么样,比如x * scale

完整代码在这里。

谢谢。

最佳答案

看起来 scale 是一个超参数,而不是可学习的参数,对吗?

在这种情况下,您需要将 scale 添加到自定义图层的参数字典中。然后在您的 Swift 类中,scale 也将位于传递给您的 init(parameters) 函数的参数字典中。将其存储在一个属性中,然后在 evaluate(inputs, outputs) 中再次从该属性中读取。

我的博文实际上展示了如何做到这一点。 ;-)

关于ios - 在 Core ML 上具有两个参数函数的自定义层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47987777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com