MPSCNNConvolutionDescriptor neuronFilter устарел
В iOS 11.0 фильтр neuronFilter устарел у некоторых владельцев ConvolutionDesptors.
Я все еще использую это, но XCode уже жалуется на устаревание, и это из-за последнего аргумента:
let desc = MPSCNNConvolutionDescriptor(kernelWidth: kernel.0,
kernelHeight: kernel.1,
inputFeatureChannels: inChannels,
outputFeatureChannels: outChannels,
neuronFilter: activation)
К сожалению, текущие документы Apple ничего не говорят о том, как решить проблему. Аргументы "neuronFilter" должны быть удалены из вызова, но как мне их использовать?
Какие-либо предложения?
2 ответа
"Вы должны теперь реализовать семейство свертки" Во всяком случае, neuronType, neuronParameterA и neuronParameterB...
Процесс изменился, но не так сильно, я думаю, вы бы сделали это без особых проблем.
И да, neuronFilter полностью устарел.
Это новый путь:
декларация
class MPSCNNConvolutionDescriptor : NSObject
обзор
Вы используете объект MPSCNNConvolutionDescriptor для описания свойств ядра MPSCNNConvolution, таких как его размер, формат пикселя и режим кэша ЦП.
Не используйте MPSCNNNeuron (neuronFilter) вместо этого используйте MPSCNNKernel.
У тебя не плохой день!
Из того, что я мог видеть из сообщения об устаревании класса:
Этот метод устарел. Пожалуйста, используйте свойства neuronType, neuronParameterA и neuronParameterB, чтобы объединить нейрон со сверткой.
Для тех, кто отчаянно спотыкается здесь (как и я, но приведенное выше руководство довольно загадочно), способ установки фильтра нейронов нерекомендуемым (iOS11+) способом:
MPSCNNConvolutionDescriptor *d = [MPSCNNConvolutionDescriptor cnnConvolutionDescriptorWithKernelWidth:w kernelHeight:h inputFeatureChannels:i outputFeatureChannels:o];
[d setFusedNeuronDescriptor:[MPSNNNeuronDescriptor cnnNeuronDescriptorWithType:MPSCNNNeuronTypeReLU a:0]];
Это "документированы" в Swift версии изMPSNNNeuronDescriptor
но не на Objective-C. Иди разберись.