@class NSString, MPSVector, MPSCNNConvolutionDescriptor, MPSCNNConvolutionWeightsAndBiasesState; @protocol MTLCommandQueue, MTLBuffer, TCMPSConvolutionWeightsOptimizing; @interface TCMPSConvolutionWeights : NSObject { unsigned long long _outputFeatureChannels; unsigned long long _inputFeatureChannels; unsigned long long _kernelHeight; unsigned long long _kernelWidth; MPSCNNConvolutionDescriptor *_convDesc; struct basic_string, std::allocator> { struct __compressed_pair::__rep, std::allocator> { struct __rep { union { struct __long { char *__data_; unsigned long long __size_; unsigned long __cap_ : 63; unsigned char __is_long_ : 1; } __l; struct __short { char __data_[23]; unsigned char __padding_[0]; unsigned char __size_ : 7; unsigned char __is_long_ : 1; } __s; struct __raw { unsigned long long __words[3]; } __r; } ; } __value_; } __r_; } _kernelParamsBinaryName; unsigned long long sizeBias; unsigned long long sizeWeights; unsigned int _seed; struct OptimizerOptions { BOOL useSGD; float learningRate; float gradientClipping; float weightDecay; float sgdMomentum; float adamBeta1; float adamBeta2; float adamEpsilon; } _optimizerOptions; id weightMomentumBuffer; id biasMomentumBuffer; id weightVelocityBuffer; id biasVelocityBuffer; id weightBuffer; id biasBuffer; id cq; } @property (readonly, nonatomic) id optimizer; @property (readonly, nonatomic) MPSVector *weightMomentumVector; @property (readonly, nonatomic) MPSVector *weightVelocityVector; @property (readonly, nonatomic) MPSVector *biasMomentumVector; @property (readonly, nonatomic) MPSVector *biasVelocityVector; @property (readonly, nonatomic) BOOL updateWeights; @property (readonly, nonatomic) MPSCNNConvolutionWeightsAndBiasesState *state; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (BOOL)load; - (void)purge; - (void)checkpoint; - (unsigned int)dataType; - (id)copyWithZone:(struct _NSZone { } *)a0 device:(id)a1; - (id)label; - (id)descriptor; - (id).cxx_construct; - (float *)biasTerms; - (void *)weights; - (void).cxx_destruct; - (id)copyWithZone:(struct _NSZone { } *)a0; - (void)setLearningRate:(float)a0; - (id)updateWithCommandBuffer:(id)a0 gradientState:(id)a1 sourceState:(id)a2; - (void)checkpointWithCommandQueue:(id)a0; - (id)updateWithCommandBuffer:(id)a0 gradientState:(id)a1; - (void)set_cq:(id)a0; - (unsigned long long)biasSize; - (id)initWithKernelWidth:(unsigned long long)a0 kernelHeight:(unsigned long long)a1 inputFeatureChannels:(unsigned long long)a2 outputFeatureChannels:(unsigned long long)a3 neuronType:(int)a4 neuronA:(float)a5 neuronB:(float)a6 stride:(unsigned long long)a7 kernelParamsBinaryName:(const char *)a8 device:(id)a9 cmd_queue:(id)a10 init_weight_ptr:(float *)a11 init_bias_ptr:(float *)a12 optimizerOptions:(struct OptimizerOptions { BOOL x0; float x1; float x2; float x3; float x4; float x5; float x6; float x7; })a13; - (id)initWithKernelWidth:(unsigned long long)a0 kernelHeight:(unsigned long long)a1 inputFeatureChannels:(unsigned long long)a2 outputFeatureChannels:(unsigned long long)a3 neuronType:(int)a4 strideX:(unsigned long long)a5 strideY:(unsigned long long)a6 neuronA:(float)a7 neuronB:(float)a8 kernelParamsBinaryName:(const char *)a9 device:(id)a10 cmd_queue:(id)a11 init_weight_ptr:(float *)a12 init_bias_ptr:(float *)a13 optimizerOptions:(struct OptimizerOptions { BOOL x0; float x1; float x2; float x3; float x4; float x5; float x6; float x7; })a14; - (id)initWithKernelWidth:(unsigned long long)a0 kernelHeight:(unsigned long long)a1 inputFeatureChannels:(unsigned long long)a2 outputFeatureChannels:(unsigned long long)a3 neuronType:(int)a4 strideX:(unsigned long long)a5 strideY:(unsigned long long)a6 neuronA:(float)a7 neuronB:(float)a8 kernelParamsBinaryName:(const char *)a9 device:(id)a10 cmd_queue:(id)a11 updateWeights:(BOOL)a12 init_weight_ptr:(float *)a13 init_bias_ptr:(float *)a14 optimizerOptions:(struct OptimizerOptions { BOOL x0; float x1; float x2; float x3; float x4; float x5; float x6; float x7; })a15; - (void)loadBias:(float *)a0; - (void)loadWeight:(float *)a0; - (id)weightShape; - (unsigned long long)weightSize; @end