/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: NeuralNetwork.proto */

/* Do not generate deprecated warnings for self */
#ifndef PROTOBUF_C__NO_DEPRECATED
#define PROTOBUF_C__NO_DEPRECATED
#endif

#include "NeuralNetwork.pb-c.h"
void   core_ml__specification__neural_network__init
                     (CoreML__Specification__NeuralNetwork         *message)
{
  static const CoreML__Specification__NeuralNetwork init_value = CORE_ML__SPECIFICATION__NEURAL_NETWORK__INIT;
  *message = init_value;
}
size_t core_ml__specification__neural_network__get_packed_size
                     (const CoreML__Specification__NeuralNetwork *message)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__neural_network__pack
                     (const CoreML__Specification__NeuralNetwork *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__neural_network__pack_to_buffer
                     (const CoreML__Specification__NeuralNetwork *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NeuralNetwork *
       core_ml__specification__neural_network__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NeuralNetwork *)
     protobuf_c_message_unpack (&core_ml__specification__neural_network__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__neural_network__free_unpacked
                     (CoreML__Specification__NeuralNetwork *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__neural_network__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__neural_network_image_scaler__init
                     (CoreML__Specification__NeuralNetworkImageScaler         *message)
{
  static const CoreML__Specification__NeuralNetworkImageScaler init_value = CORE_ML__SPECIFICATION__NEURAL_NETWORK_IMAGE_SCALER__INIT;
  *message = init_value;
}
size_t core_ml__specification__neural_network_image_scaler__get_packed_size
                     (const CoreML__Specification__NeuralNetworkImageScaler *message)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_image_scaler__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__neural_network_image_scaler__pack
                     (const CoreML__Specification__NeuralNetworkImageScaler *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_image_scaler__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__neural_network_image_scaler__pack_to_buffer
                     (const CoreML__Specification__NeuralNetworkImageScaler *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_image_scaler__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NeuralNetworkImageScaler *
       core_ml__specification__neural_network_image_scaler__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NeuralNetworkImageScaler *)
     protobuf_c_message_unpack (&core_ml__specification__neural_network_image_scaler__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__neural_network_image_scaler__free_unpacked
                     (CoreML__Specification__NeuralNetworkImageScaler *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__neural_network_image_scaler__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__neural_network_mean_image__init
                     (CoreML__Specification__NeuralNetworkMeanImage         *message)
{
  static const CoreML__Specification__NeuralNetworkMeanImage init_value = CORE_ML__SPECIFICATION__NEURAL_NETWORK_MEAN_IMAGE__INIT;
  *message = init_value;
}
size_t core_ml__specification__neural_network_mean_image__get_packed_size
                     (const CoreML__Specification__NeuralNetworkMeanImage *message)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_mean_image__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__neural_network_mean_image__pack
                     (const CoreML__Specification__NeuralNetworkMeanImage *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_mean_image__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__neural_network_mean_image__pack_to_buffer
                     (const CoreML__Specification__NeuralNetworkMeanImage *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_mean_image__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NeuralNetworkMeanImage *
       core_ml__specification__neural_network_mean_image__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NeuralNetworkMeanImage *)
     protobuf_c_message_unpack (&core_ml__specification__neural_network_mean_image__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__neural_network_mean_image__free_unpacked
                     (CoreML__Specification__NeuralNetworkMeanImage *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__neural_network_mean_image__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__neural_network_preprocessing__init
                     (CoreML__Specification__NeuralNetworkPreprocessing         *message)
{
  static const CoreML__Specification__NeuralNetworkPreprocessing init_value = CORE_ML__SPECIFICATION__NEURAL_NETWORK_PREPROCESSING__INIT;
  *message = init_value;
}
size_t core_ml__specification__neural_network_preprocessing__get_packed_size
                     (const CoreML__Specification__NeuralNetworkPreprocessing *message)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_preprocessing__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__neural_network_preprocessing__pack
                     (const CoreML__Specification__NeuralNetworkPreprocessing *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_preprocessing__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__neural_network_preprocessing__pack_to_buffer
                     (const CoreML__Specification__NeuralNetworkPreprocessing *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_preprocessing__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NeuralNetworkPreprocessing *
       core_ml__specification__neural_network_preprocessing__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NeuralNetworkPreprocessing *)
     protobuf_c_message_unpack (&core_ml__specification__neural_network_preprocessing__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__neural_network_preprocessing__free_unpacked
                     (CoreML__Specification__NeuralNetworkPreprocessing *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__neural_network_preprocessing__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_re_lu__init
                     (CoreML__Specification__ActivationReLU         *message)
{
  static const CoreML__Specification__ActivationReLU init_value = CORE_ML__SPECIFICATION__ACTIVATION_RE_LU__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_re_lu__get_packed_size
                     (const CoreML__Specification__ActivationReLU *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_re_lu__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_re_lu__pack
                     (const CoreML__Specification__ActivationReLU *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_re_lu__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_re_lu__pack_to_buffer
                     (const CoreML__Specification__ActivationReLU *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_re_lu__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationReLU *
       core_ml__specification__activation_re_lu__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationReLU *)
     protobuf_c_message_unpack (&core_ml__specification__activation_re_lu__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_re_lu__free_unpacked
                     (CoreML__Specification__ActivationReLU *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_re_lu__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_leaky_re_lu__init
                     (CoreML__Specification__ActivationLeakyReLU         *message)
{
  static const CoreML__Specification__ActivationLeakyReLU init_value = CORE_ML__SPECIFICATION__ACTIVATION_LEAKY_RE_LU__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_leaky_re_lu__get_packed_size
                     (const CoreML__Specification__ActivationLeakyReLU *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_leaky_re_lu__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_leaky_re_lu__pack
                     (const CoreML__Specification__ActivationLeakyReLU *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_leaky_re_lu__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_leaky_re_lu__pack_to_buffer
                     (const CoreML__Specification__ActivationLeakyReLU *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_leaky_re_lu__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationLeakyReLU *
       core_ml__specification__activation_leaky_re_lu__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationLeakyReLU *)
     protobuf_c_message_unpack (&core_ml__specification__activation_leaky_re_lu__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_leaky_re_lu__free_unpacked
                     (CoreML__Specification__ActivationLeakyReLU *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_leaky_re_lu__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_tanh__init
                     (CoreML__Specification__ActivationTanh         *message)
{
  static const CoreML__Specification__ActivationTanh init_value = CORE_ML__SPECIFICATION__ACTIVATION_TANH__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_tanh__get_packed_size
                     (const CoreML__Specification__ActivationTanh *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_tanh__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_tanh__pack
                     (const CoreML__Specification__ActivationTanh *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_tanh__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_tanh__pack_to_buffer
                     (const CoreML__Specification__ActivationTanh *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_tanh__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationTanh *
       core_ml__specification__activation_tanh__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationTanh *)
     protobuf_c_message_unpack (&core_ml__specification__activation_tanh__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_tanh__free_unpacked
                     (CoreML__Specification__ActivationTanh *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_tanh__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_scaled_tanh__init
                     (CoreML__Specification__ActivationScaledTanh         *message)
{
  static const CoreML__Specification__ActivationScaledTanh init_value = CORE_ML__SPECIFICATION__ACTIVATION_SCALED_TANH__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_scaled_tanh__get_packed_size
                     (const CoreML__Specification__ActivationScaledTanh *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_scaled_tanh__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_scaled_tanh__pack
                     (const CoreML__Specification__ActivationScaledTanh *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_scaled_tanh__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_scaled_tanh__pack_to_buffer
                     (const CoreML__Specification__ActivationScaledTanh *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_scaled_tanh__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationScaledTanh *
       core_ml__specification__activation_scaled_tanh__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationScaledTanh *)
     protobuf_c_message_unpack (&core_ml__specification__activation_scaled_tanh__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_scaled_tanh__free_unpacked
                     (CoreML__Specification__ActivationScaledTanh *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_scaled_tanh__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_sigmoid__init
                     (CoreML__Specification__ActivationSigmoid         *message)
{
  static const CoreML__Specification__ActivationSigmoid init_value = CORE_ML__SPECIFICATION__ACTIVATION_SIGMOID__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_sigmoid__get_packed_size
                     (const CoreML__Specification__ActivationSigmoid *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_sigmoid__pack
                     (const CoreML__Specification__ActivationSigmoid *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_sigmoid__pack_to_buffer
                     (const CoreML__Specification__ActivationSigmoid *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationSigmoid *
       core_ml__specification__activation_sigmoid__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationSigmoid *)
     protobuf_c_message_unpack (&core_ml__specification__activation_sigmoid__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_sigmoid__free_unpacked
                     (CoreML__Specification__ActivationSigmoid *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_linear__init
                     (CoreML__Specification__ActivationLinear         *message)
{
  static const CoreML__Specification__ActivationLinear init_value = CORE_ML__SPECIFICATION__ACTIVATION_LINEAR__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_linear__get_packed_size
                     (const CoreML__Specification__ActivationLinear *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_linear__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_linear__pack
                     (const CoreML__Specification__ActivationLinear *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_linear__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_linear__pack_to_buffer
                     (const CoreML__Specification__ActivationLinear *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_linear__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationLinear *
       core_ml__specification__activation_linear__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationLinear *)
     protobuf_c_message_unpack (&core_ml__specification__activation_linear__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_linear__free_unpacked
                     (CoreML__Specification__ActivationLinear *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_linear__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_sigmoid_hard__init
                     (CoreML__Specification__ActivationSigmoidHard         *message)
{
  static const CoreML__Specification__ActivationSigmoidHard init_value = CORE_ML__SPECIFICATION__ACTIVATION_SIGMOID_HARD__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_sigmoid_hard__get_packed_size
                     (const CoreML__Specification__ActivationSigmoidHard *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid_hard__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_sigmoid_hard__pack
                     (const CoreML__Specification__ActivationSigmoidHard *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid_hard__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_sigmoid_hard__pack_to_buffer
                     (const CoreML__Specification__ActivationSigmoidHard *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid_hard__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationSigmoidHard *
       core_ml__specification__activation_sigmoid_hard__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationSigmoidHard *)
     protobuf_c_message_unpack (&core_ml__specification__activation_sigmoid_hard__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_sigmoid_hard__free_unpacked
                     (CoreML__Specification__ActivationSigmoidHard *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_sigmoid_hard__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_pre_lu__init
                     (CoreML__Specification__ActivationPReLU         *message)
{
  static const CoreML__Specification__ActivationPReLU init_value = CORE_ML__SPECIFICATION__ACTIVATION_PRE_LU__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_pre_lu__get_packed_size
                     (const CoreML__Specification__ActivationPReLU *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_pre_lu__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_pre_lu__pack
                     (const CoreML__Specification__ActivationPReLU *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_pre_lu__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_pre_lu__pack_to_buffer
                     (const CoreML__Specification__ActivationPReLU *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_pre_lu__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationPReLU *
       core_ml__specification__activation_pre_lu__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationPReLU *)
     protobuf_c_message_unpack (&core_ml__specification__activation_pre_lu__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_pre_lu__free_unpacked
                     (CoreML__Specification__ActivationPReLU *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_pre_lu__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_elu__init
                     (CoreML__Specification__ActivationELU         *message)
{
  static const CoreML__Specification__ActivationELU init_value = CORE_ML__SPECIFICATION__ACTIVATION_ELU__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_elu__get_packed_size
                     (const CoreML__Specification__ActivationELU *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_elu__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_elu__pack
                     (const CoreML__Specification__ActivationELU *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_elu__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_elu__pack_to_buffer
                     (const CoreML__Specification__ActivationELU *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_elu__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationELU *
       core_ml__specification__activation_elu__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationELU *)
     protobuf_c_message_unpack (&core_ml__specification__activation_elu__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_elu__free_unpacked
                     (CoreML__Specification__ActivationELU *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_elu__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_thresholded_re_lu__init
                     (CoreML__Specification__ActivationThresholdedReLU         *message)
{
  static const CoreML__Specification__ActivationThresholdedReLU init_value = CORE_ML__SPECIFICATION__ACTIVATION_THRESHOLDED_RE_LU__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_thresholded_re_lu__get_packed_size
                     (const CoreML__Specification__ActivationThresholdedReLU *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_thresholded_re_lu__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_thresholded_re_lu__pack
                     (const CoreML__Specification__ActivationThresholdedReLU *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_thresholded_re_lu__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_thresholded_re_lu__pack_to_buffer
                     (const CoreML__Specification__ActivationThresholdedReLU *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_thresholded_re_lu__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationThresholdedReLU *
       core_ml__specification__activation_thresholded_re_lu__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationThresholdedReLU *)
     protobuf_c_message_unpack (&core_ml__specification__activation_thresholded_re_lu__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_thresholded_re_lu__free_unpacked
                     (CoreML__Specification__ActivationThresholdedReLU *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_thresholded_re_lu__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_softsign__init
                     (CoreML__Specification__ActivationSoftsign         *message)
{
  static const CoreML__Specification__ActivationSoftsign init_value = CORE_ML__SPECIFICATION__ACTIVATION_SOFTSIGN__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_softsign__get_packed_size
                     (const CoreML__Specification__ActivationSoftsign *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_softsign__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_softsign__pack
                     (const CoreML__Specification__ActivationSoftsign *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_softsign__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_softsign__pack_to_buffer
                     (const CoreML__Specification__ActivationSoftsign *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_softsign__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationSoftsign *
       core_ml__specification__activation_softsign__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationSoftsign *)
     protobuf_c_message_unpack (&core_ml__specification__activation_softsign__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_softsign__free_unpacked
                     (CoreML__Specification__ActivationSoftsign *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_softsign__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_softplus__init
                     (CoreML__Specification__ActivationSoftplus         *message)
{
  static const CoreML__Specification__ActivationSoftplus init_value = CORE_ML__SPECIFICATION__ACTIVATION_SOFTPLUS__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_softplus__get_packed_size
                     (const CoreML__Specification__ActivationSoftplus *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_softplus__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_softplus__pack
                     (const CoreML__Specification__ActivationSoftplus *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_softplus__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_softplus__pack_to_buffer
                     (const CoreML__Specification__ActivationSoftplus *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_softplus__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationSoftplus *
       core_ml__specification__activation_softplus__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationSoftplus *)
     protobuf_c_message_unpack (&core_ml__specification__activation_softplus__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_softplus__free_unpacked
                     (CoreML__Specification__ActivationSoftplus *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_softplus__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_parametric_softplus__init
                     (CoreML__Specification__ActivationParametricSoftplus         *message)
{
  static const CoreML__Specification__ActivationParametricSoftplus init_value = CORE_ML__SPECIFICATION__ACTIVATION_PARAMETRIC_SOFTPLUS__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_parametric_softplus__get_packed_size
                     (const CoreML__Specification__ActivationParametricSoftplus *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_parametric_softplus__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_parametric_softplus__pack
                     (const CoreML__Specification__ActivationParametricSoftplus *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_parametric_softplus__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_parametric_softplus__pack_to_buffer
                     (const CoreML__Specification__ActivationParametricSoftplus *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_parametric_softplus__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationParametricSoftplus *
       core_ml__specification__activation_parametric_softplus__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationParametricSoftplus *)
     protobuf_c_message_unpack (&core_ml__specification__activation_parametric_softplus__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_parametric_softplus__free_unpacked
                     (CoreML__Specification__ActivationParametricSoftplus *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_parametric_softplus__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__activation_params__init
                     (CoreML__Specification__ActivationParams         *message)
{
  static const CoreML__Specification__ActivationParams init_value = CORE_ML__SPECIFICATION__ACTIVATION_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__activation_params__get_packed_size
                     (const CoreML__Specification__ActivationParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__activation_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__activation_params__pack
                     (const CoreML__Specification__ActivationParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__activation_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__activation_params__pack_to_buffer
                     (const CoreML__Specification__ActivationParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__activation_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ActivationParams *
       core_ml__specification__activation_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ActivationParams *)
     protobuf_c_message_unpack (&core_ml__specification__activation_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__activation_params__free_unpacked
                     (CoreML__Specification__ActivationParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__activation_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__tensor__init
                     (CoreML__Specification__Tensor         *message)
{
  static const CoreML__Specification__Tensor init_value = CORE_ML__SPECIFICATION__TENSOR__INIT;
  *message = init_value;
}
size_t core_ml__specification__tensor__get_packed_size
                     (const CoreML__Specification__Tensor *message)
{
  assert(message->base.descriptor == &core_ml__specification__tensor__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__tensor__pack
                     (const CoreML__Specification__Tensor *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__tensor__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__tensor__pack_to_buffer
                     (const CoreML__Specification__Tensor *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__tensor__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__Tensor *
       core_ml__specification__tensor__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__Tensor *)
     protobuf_c_message_unpack (&core_ml__specification__tensor__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__tensor__free_unpacked
                     (CoreML__Specification__Tensor *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__tensor__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__neural_network_layer__init
                     (CoreML__Specification__NeuralNetworkLayer         *message)
{
  static const CoreML__Specification__NeuralNetworkLayer init_value = CORE_ML__SPECIFICATION__NEURAL_NETWORK_LAYER__INIT;
  *message = init_value;
}
size_t core_ml__specification__neural_network_layer__get_packed_size
                     (const CoreML__Specification__NeuralNetworkLayer *message)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_layer__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__neural_network_layer__pack
                     (const CoreML__Specification__NeuralNetworkLayer *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_layer__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__neural_network_layer__pack_to_buffer
                     (const CoreML__Specification__NeuralNetworkLayer *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_layer__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NeuralNetworkLayer *
       core_ml__specification__neural_network_layer__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NeuralNetworkLayer *)
     protobuf_c_message_unpack (&core_ml__specification__neural_network_layer__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__neural_network_layer__free_unpacked
                     (CoreML__Specification__NeuralNetworkLayer *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__neural_network_layer__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__branch_layer_params__init
                     (CoreML__Specification__BranchLayerParams         *message)
{
  static const CoreML__Specification__BranchLayerParams init_value = CORE_ML__SPECIFICATION__BRANCH_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__branch_layer_params__get_packed_size
                     (const CoreML__Specification__BranchLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__branch_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__branch_layer_params__pack
                     (const CoreML__Specification__BranchLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__branch_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__branch_layer_params__pack_to_buffer
                     (const CoreML__Specification__BranchLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__branch_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BranchLayerParams *
       core_ml__specification__branch_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BranchLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__branch_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__branch_layer_params__free_unpacked
                     (CoreML__Specification__BranchLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__branch_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__loop_layer_params__init
                     (CoreML__Specification__LoopLayerParams         *message)
{
  static const CoreML__Specification__LoopLayerParams init_value = CORE_ML__SPECIFICATION__LOOP_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__loop_layer_params__get_packed_size
                     (const CoreML__Specification__LoopLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__loop_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__loop_layer_params__pack
                     (const CoreML__Specification__LoopLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__loop_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__loop_layer_params__pack_to_buffer
                     (const CoreML__Specification__LoopLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__loop_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LoopLayerParams *
       core_ml__specification__loop_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LoopLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__loop_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__loop_layer_params__free_unpacked
                     (CoreML__Specification__LoopLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__loop_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__loop_break_layer_params__init
                     (CoreML__Specification__LoopBreakLayerParams         *message)
{
  static const CoreML__Specification__LoopBreakLayerParams init_value = CORE_ML__SPECIFICATION__LOOP_BREAK_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__loop_break_layer_params__get_packed_size
                     (const CoreML__Specification__LoopBreakLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__loop_break_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__loop_break_layer_params__pack
                     (const CoreML__Specification__LoopBreakLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__loop_break_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__loop_break_layer_params__pack_to_buffer
                     (const CoreML__Specification__LoopBreakLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__loop_break_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LoopBreakLayerParams *
       core_ml__specification__loop_break_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LoopBreakLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__loop_break_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__loop_break_layer_params__free_unpacked
                     (CoreML__Specification__LoopBreakLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__loop_break_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__loop_continue_layer_params__init
                     (CoreML__Specification__LoopContinueLayerParams         *message)
{
  static const CoreML__Specification__LoopContinueLayerParams init_value = CORE_ML__SPECIFICATION__LOOP_CONTINUE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__loop_continue_layer_params__get_packed_size
                     (const CoreML__Specification__LoopContinueLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__loop_continue_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__loop_continue_layer_params__pack
                     (const CoreML__Specification__LoopContinueLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__loop_continue_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__loop_continue_layer_params__pack_to_buffer
                     (const CoreML__Specification__LoopContinueLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__loop_continue_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LoopContinueLayerParams *
       core_ml__specification__loop_continue_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LoopContinueLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__loop_continue_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__loop_continue_layer_params__free_unpacked
                     (CoreML__Specification__LoopContinueLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__loop_continue_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__copy_layer_params__init
                     (CoreML__Specification__CopyLayerParams         *message)
{
  static const CoreML__Specification__CopyLayerParams init_value = CORE_ML__SPECIFICATION__COPY_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__copy_layer_params__get_packed_size
                     (const CoreML__Specification__CopyLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__copy_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__copy_layer_params__pack
                     (const CoreML__Specification__CopyLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__copy_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__copy_layer_params__pack_to_buffer
                     (const CoreML__Specification__CopyLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__copy_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CopyLayerParams *
       core_ml__specification__copy_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CopyLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__copy_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__copy_layer_params__free_unpacked
                     (CoreML__Specification__CopyLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__copy_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__greater_than_layer_params__init
                     (CoreML__Specification__GreaterThanLayerParams         *message)
{
  static const CoreML__Specification__GreaterThanLayerParams init_value = CORE_ML__SPECIFICATION__GREATER_THAN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__greater_than_layer_params__get_packed_size
                     (const CoreML__Specification__GreaterThanLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__greater_than_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__greater_than_layer_params__pack
                     (const CoreML__Specification__GreaterThanLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__greater_than_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__greater_than_layer_params__pack_to_buffer
                     (const CoreML__Specification__GreaterThanLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__greater_than_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GreaterThanLayerParams *
       core_ml__specification__greater_than_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GreaterThanLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__greater_than_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__greater_than_layer_params__free_unpacked
                     (CoreML__Specification__GreaterThanLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__greater_than_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__greater_equal_layer_params__init
                     (CoreML__Specification__GreaterEqualLayerParams         *message)
{
  static const CoreML__Specification__GreaterEqualLayerParams init_value = CORE_ML__SPECIFICATION__GREATER_EQUAL_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__greater_equal_layer_params__get_packed_size
                     (const CoreML__Specification__GreaterEqualLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__greater_equal_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__greater_equal_layer_params__pack
                     (const CoreML__Specification__GreaterEqualLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__greater_equal_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__greater_equal_layer_params__pack_to_buffer
                     (const CoreML__Specification__GreaterEqualLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__greater_equal_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GreaterEqualLayerParams *
       core_ml__specification__greater_equal_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GreaterEqualLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__greater_equal_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__greater_equal_layer_params__free_unpacked
                     (CoreML__Specification__GreaterEqualLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__greater_equal_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__less_than_layer_params__init
                     (CoreML__Specification__LessThanLayerParams         *message)
{
  static const CoreML__Specification__LessThanLayerParams init_value = CORE_ML__SPECIFICATION__LESS_THAN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__less_than_layer_params__get_packed_size
                     (const CoreML__Specification__LessThanLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__less_than_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__less_than_layer_params__pack
                     (const CoreML__Specification__LessThanLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__less_than_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__less_than_layer_params__pack_to_buffer
                     (const CoreML__Specification__LessThanLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__less_than_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LessThanLayerParams *
       core_ml__specification__less_than_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LessThanLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__less_than_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__less_than_layer_params__free_unpacked
                     (CoreML__Specification__LessThanLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__less_than_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__less_equal_layer_params__init
                     (CoreML__Specification__LessEqualLayerParams         *message)
{
  static const CoreML__Specification__LessEqualLayerParams init_value = CORE_ML__SPECIFICATION__LESS_EQUAL_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__less_equal_layer_params__get_packed_size
                     (const CoreML__Specification__LessEqualLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__less_equal_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__less_equal_layer_params__pack
                     (const CoreML__Specification__LessEqualLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__less_equal_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__less_equal_layer_params__pack_to_buffer
                     (const CoreML__Specification__LessEqualLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__less_equal_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LessEqualLayerParams *
       core_ml__specification__less_equal_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LessEqualLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__less_equal_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__less_equal_layer_params__free_unpacked
                     (CoreML__Specification__LessEqualLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__less_equal_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__equal_layer_params__init
                     (CoreML__Specification__EqualLayerParams         *message)
{
  static const CoreML__Specification__EqualLayerParams init_value = CORE_ML__SPECIFICATION__EQUAL_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__equal_layer_params__get_packed_size
                     (const CoreML__Specification__EqualLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__equal_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__equal_layer_params__pack
                     (const CoreML__Specification__EqualLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__equal_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__equal_layer_params__pack_to_buffer
                     (const CoreML__Specification__EqualLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__equal_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__EqualLayerParams *
       core_ml__specification__equal_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__EqualLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__equal_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__equal_layer_params__free_unpacked
                     (CoreML__Specification__EqualLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__equal_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__not_equal_layer_params__init
                     (CoreML__Specification__NotEqualLayerParams         *message)
{
  static const CoreML__Specification__NotEqualLayerParams init_value = CORE_ML__SPECIFICATION__NOT_EQUAL_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__not_equal_layer_params__get_packed_size
                     (const CoreML__Specification__NotEqualLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__not_equal_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__not_equal_layer_params__pack
                     (const CoreML__Specification__NotEqualLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__not_equal_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__not_equal_layer_params__pack_to_buffer
                     (const CoreML__Specification__NotEqualLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__not_equal_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NotEqualLayerParams *
       core_ml__specification__not_equal_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NotEqualLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__not_equal_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__not_equal_layer_params__free_unpacked
                     (CoreML__Specification__NotEqualLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__not_equal_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__logical_and_layer_params__init
                     (CoreML__Specification__LogicalAndLayerParams         *message)
{
  static const CoreML__Specification__LogicalAndLayerParams init_value = CORE_ML__SPECIFICATION__LOGICAL_AND_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__logical_and_layer_params__get_packed_size
                     (const CoreML__Specification__LogicalAndLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__logical_and_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__logical_and_layer_params__pack
                     (const CoreML__Specification__LogicalAndLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__logical_and_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__logical_and_layer_params__pack_to_buffer
                     (const CoreML__Specification__LogicalAndLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__logical_and_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LogicalAndLayerParams *
       core_ml__specification__logical_and_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LogicalAndLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__logical_and_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__logical_and_layer_params__free_unpacked
                     (CoreML__Specification__LogicalAndLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__logical_and_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__logical_or_layer_params__init
                     (CoreML__Specification__LogicalOrLayerParams         *message)
{
  static const CoreML__Specification__LogicalOrLayerParams init_value = CORE_ML__SPECIFICATION__LOGICAL_OR_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__logical_or_layer_params__get_packed_size
                     (const CoreML__Specification__LogicalOrLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__logical_or_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__logical_or_layer_params__pack
                     (const CoreML__Specification__LogicalOrLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__logical_or_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__logical_or_layer_params__pack_to_buffer
                     (const CoreML__Specification__LogicalOrLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__logical_or_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LogicalOrLayerParams *
       core_ml__specification__logical_or_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LogicalOrLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__logical_or_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__logical_or_layer_params__free_unpacked
                     (CoreML__Specification__LogicalOrLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__logical_or_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__logical_xor_layer_params__init
                     (CoreML__Specification__LogicalXorLayerParams         *message)
{
  static const CoreML__Specification__LogicalXorLayerParams init_value = CORE_ML__SPECIFICATION__LOGICAL_XOR_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__logical_xor_layer_params__get_packed_size
                     (const CoreML__Specification__LogicalXorLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__logical_xor_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__logical_xor_layer_params__pack
                     (const CoreML__Specification__LogicalXorLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__logical_xor_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__logical_xor_layer_params__pack_to_buffer
                     (const CoreML__Specification__LogicalXorLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__logical_xor_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LogicalXorLayerParams *
       core_ml__specification__logical_xor_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LogicalXorLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__logical_xor_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__logical_xor_layer_params__free_unpacked
                     (CoreML__Specification__LogicalXorLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__logical_xor_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__logical_not_layer_params__init
                     (CoreML__Specification__LogicalNotLayerParams         *message)
{
  static const CoreML__Specification__LogicalNotLayerParams init_value = CORE_ML__SPECIFICATION__LOGICAL_NOT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__logical_not_layer_params__get_packed_size
                     (const CoreML__Specification__LogicalNotLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__logical_not_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__logical_not_layer_params__pack
                     (const CoreML__Specification__LogicalNotLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__logical_not_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__logical_not_layer_params__pack_to_buffer
                     (const CoreML__Specification__LogicalNotLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__logical_not_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LogicalNotLayerParams *
       core_ml__specification__logical_not_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LogicalNotLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__logical_not_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__logical_not_layer_params__free_unpacked
                     (CoreML__Specification__LogicalNotLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__logical_not_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__border_amounts__edge_sizes__init
                     (CoreML__Specification__BorderAmounts__EdgeSizes         *message)
{
  static const CoreML__Specification__BorderAmounts__EdgeSizes init_value = CORE_ML__SPECIFICATION__BORDER_AMOUNTS__EDGE_SIZES__INIT;
  *message = init_value;
}
void   core_ml__specification__border_amounts__init
                     (CoreML__Specification__BorderAmounts         *message)
{
  static const CoreML__Specification__BorderAmounts init_value = CORE_ML__SPECIFICATION__BORDER_AMOUNTS__INIT;
  *message = init_value;
}
size_t core_ml__specification__border_amounts__get_packed_size
                     (const CoreML__Specification__BorderAmounts *message)
{
  assert(message->base.descriptor == &core_ml__specification__border_amounts__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__border_amounts__pack
                     (const CoreML__Specification__BorderAmounts *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__border_amounts__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__border_amounts__pack_to_buffer
                     (const CoreML__Specification__BorderAmounts *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__border_amounts__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BorderAmounts *
       core_ml__specification__border_amounts__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BorderAmounts *)
     protobuf_c_message_unpack (&core_ml__specification__border_amounts__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__border_amounts__free_unpacked
                     (CoreML__Specification__BorderAmounts *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__border_amounts__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__valid_padding__init
                     (CoreML__Specification__ValidPadding         *message)
{
  static const CoreML__Specification__ValidPadding init_value = CORE_ML__SPECIFICATION__VALID_PADDING__INIT;
  *message = init_value;
}
size_t core_ml__specification__valid_padding__get_packed_size
                     (const CoreML__Specification__ValidPadding *message)
{
  assert(message->base.descriptor == &core_ml__specification__valid_padding__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__valid_padding__pack
                     (const CoreML__Specification__ValidPadding *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__valid_padding__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__valid_padding__pack_to_buffer
                     (const CoreML__Specification__ValidPadding *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__valid_padding__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ValidPadding *
       core_ml__specification__valid_padding__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ValidPadding *)
     protobuf_c_message_unpack (&core_ml__specification__valid_padding__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__valid_padding__free_unpacked
                     (CoreML__Specification__ValidPadding *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__valid_padding__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__same_padding__init
                     (CoreML__Specification__SamePadding         *message)
{
  static const CoreML__Specification__SamePadding init_value = CORE_ML__SPECIFICATION__SAME_PADDING__INIT;
  *message = init_value;
}
size_t core_ml__specification__same_padding__get_packed_size
                     (const CoreML__Specification__SamePadding *message)
{
  assert(message->base.descriptor == &core_ml__specification__same_padding__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__same_padding__pack
                     (const CoreML__Specification__SamePadding *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__same_padding__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__same_padding__pack_to_buffer
                     (const CoreML__Specification__SamePadding *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__same_padding__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SamePadding *
       core_ml__specification__same_padding__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SamePadding *)
     protobuf_c_message_unpack (&core_ml__specification__same_padding__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__same_padding__free_unpacked
                     (CoreML__Specification__SamePadding *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__same_padding__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__sampling_mode__init
                     (CoreML__Specification__SamplingMode         *message)
{
  static const CoreML__Specification__SamplingMode init_value = CORE_ML__SPECIFICATION__SAMPLING_MODE__INIT;
  *message = init_value;
}
size_t core_ml__specification__sampling_mode__get_packed_size
                     (const CoreML__Specification__SamplingMode *message)
{
  assert(message->base.descriptor == &core_ml__specification__sampling_mode__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__sampling_mode__pack
                     (const CoreML__Specification__SamplingMode *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__sampling_mode__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__sampling_mode__pack_to_buffer
                     (const CoreML__Specification__SamplingMode *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__sampling_mode__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SamplingMode *
       core_ml__specification__sampling_mode__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SamplingMode *)
     protobuf_c_message_unpack (&core_ml__specification__sampling_mode__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__sampling_mode__free_unpacked
                     (CoreML__Specification__SamplingMode *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__sampling_mode__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__box_coordinates_mode__init
                     (CoreML__Specification__BoxCoordinatesMode         *message)
{
  static const CoreML__Specification__BoxCoordinatesMode init_value = CORE_ML__SPECIFICATION__BOX_COORDINATES_MODE__INIT;
  *message = init_value;
}
size_t core_ml__specification__box_coordinates_mode__get_packed_size
                     (const CoreML__Specification__BoxCoordinatesMode *message)
{
  assert(message->base.descriptor == &core_ml__specification__box_coordinates_mode__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__box_coordinates_mode__pack
                     (const CoreML__Specification__BoxCoordinatesMode *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__box_coordinates_mode__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__box_coordinates_mode__pack_to_buffer
                     (const CoreML__Specification__BoxCoordinatesMode *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__box_coordinates_mode__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BoxCoordinatesMode *
       core_ml__specification__box_coordinates_mode__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BoxCoordinatesMode *)
     protobuf_c_message_unpack (&core_ml__specification__box_coordinates_mode__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__box_coordinates_mode__free_unpacked
                     (CoreML__Specification__BoxCoordinatesMode *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__box_coordinates_mode__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__weight_params__init
                     (CoreML__Specification__WeightParams         *message)
{
  static const CoreML__Specification__WeightParams init_value = CORE_ML__SPECIFICATION__WEIGHT_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__weight_params__get_packed_size
                     (const CoreML__Specification__WeightParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__weight_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__weight_params__pack
                     (const CoreML__Specification__WeightParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__weight_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__weight_params__pack_to_buffer
                     (const CoreML__Specification__WeightParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__weight_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__WeightParams *
       core_ml__specification__weight_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__WeightParams *)
     protobuf_c_message_unpack (&core_ml__specification__weight_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__weight_params__free_unpacked
                     (CoreML__Specification__WeightParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__weight_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__quantization_params__init
                     (CoreML__Specification__QuantizationParams         *message)
{
  static const CoreML__Specification__QuantizationParams init_value = CORE_ML__SPECIFICATION__QUANTIZATION_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__quantization_params__get_packed_size
                     (const CoreML__Specification__QuantizationParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__quantization_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__quantization_params__pack
                     (const CoreML__Specification__QuantizationParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__quantization_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__quantization_params__pack_to_buffer
                     (const CoreML__Specification__QuantizationParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__quantization_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__QuantizationParams *
       core_ml__specification__quantization_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__QuantizationParams *)
     protobuf_c_message_unpack (&core_ml__specification__quantization_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__quantization_params__free_unpacked
                     (CoreML__Specification__QuantizationParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__quantization_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__linear_quantization_params__init
                     (CoreML__Specification__LinearQuantizationParams         *message)
{
  static const CoreML__Specification__LinearQuantizationParams init_value = CORE_ML__SPECIFICATION__LINEAR_QUANTIZATION_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__linear_quantization_params__get_packed_size
                     (const CoreML__Specification__LinearQuantizationParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__linear_quantization_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__linear_quantization_params__pack
                     (const CoreML__Specification__LinearQuantizationParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__linear_quantization_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__linear_quantization_params__pack_to_buffer
                     (const CoreML__Specification__LinearQuantizationParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__linear_quantization_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LinearQuantizationParams *
       core_ml__specification__linear_quantization_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LinearQuantizationParams *)
     protobuf_c_message_unpack (&core_ml__specification__linear_quantization_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__linear_quantization_params__free_unpacked
                     (CoreML__Specification__LinearQuantizationParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__linear_quantization_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__look_up_table_quantization_params__init
                     (CoreML__Specification__LookUpTableQuantizationParams         *message)
{
  static const CoreML__Specification__LookUpTableQuantizationParams init_value = CORE_ML__SPECIFICATION__LOOK_UP_TABLE_QUANTIZATION_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__look_up_table_quantization_params__get_packed_size
                     (const CoreML__Specification__LookUpTableQuantizationParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__look_up_table_quantization_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__look_up_table_quantization_params__pack
                     (const CoreML__Specification__LookUpTableQuantizationParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__look_up_table_quantization_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__look_up_table_quantization_params__pack_to_buffer
                     (const CoreML__Specification__LookUpTableQuantizationParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__look_up_table_quantization_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LookUpTableQuantizationParams *
       core_ml__specification__look_up_table_quantization_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LookUpTableQuantizationParams *)
     protobuf_c_message_unpack (&core_ml__specification__look_up_table_quantization_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__look_up_table_quantization_params__free_unpacked
                     (CoreML__Specification__LookUpTableQuantizationParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__look_up_table_quantization_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__convolution_layer_params__init
                     (CoreML__Specification__ConvolutionLayerParams         *message)
{
  static const CoreML__Specification__ConvolutionLayerParams init_value = CORE_ML__SPECIFICATION__CONVOLUTION_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__convolution_layer_params__get_packed_size
                     (const CoreML__Specification__ConvolutionLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__convolution_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__convolution_layer_params__pack
                     (const CoreML__Specification__ConvolutionLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__convolution_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__convolution_layer_params__pack_to_buffer
                     (const CoreML__Specification__ConvolutionLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__convolution_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ConvolutionLayerParams *
       core_ml__specification__convolution_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ConvolutionLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__convolution_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__convolution_layer_params__free_unpacked
                     (CoreML__Specification__ConvolutionLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__convolution_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__convolution3_dlayer_params__init
                     (CoreML__Specification__Convolution3DLayerParams         *message)
{
  static const CoreML__Specification__Convolution3DLayerParams init_value = CORE_ML__SPECIFICATION__CONVOLUTION3_DLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__convolution3_dlayer_params__get_packed_size
                     (const CoreML__Specification__Convolution3DLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__convolution3_dlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__convolution3_dlayer_params__pack
                     (const CoreML__Specification__Convolution3DLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__convolution3_dlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__convolution3_dlayer_params__pack_to_buffer
                     (const CoreML__Specification__Convolution3DLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__convolution3_dlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__Convolution3DLayerParams *
       core_ml__specification__convolution3_dlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__Convolution3DLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__convolution3_dlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__convolution3_dlayer_params__free_unpacked
                     (CoreML__Specification__Convolution3DLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__convolution3_dlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__inner_product_layer_params__init
                     (CoreML__Specification__InnerProductLayerParams         *message)
{
  static const CoreML__Specification__InnerProductLayerParams init_value = CORE_ML__SPECIFICATION__INNER_PRODUCT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__inner_product_layer_params__get_packed_size
                     (const CoreML__Specification__InnerProductLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__inner_product_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__inner_product_layer_params__pack
                     (const CoreML__Specification__InnerProductLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__inner_product_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__inner_product_layer_params__pack_to_buffer
                     (const CoreML__Specification__InnerProductLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__inner_product_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__InnerProductLayerParams *
       core_ml__specification__inner_product_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__InnerProductLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__inner_product_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__inner_product_layer_params__free_unpacked
                     (CoreML__Specification__InnerProductLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__inner_product_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__embedding_layer_params__init
                     (CoreML__Specification__EmbeddingLayerParams         *message)
{
  static const CoreML__Specification__EmbeddingLayerParams init_value = CORE_ML__SPECIFICATION__EMBEDDING_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__embedding_layer_params__get_packed_size
                     (const CoreML__Specification__EmbeddingLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__embedding_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__embedding_layer_params__pack
                     (const CoreML__Specification__EmbeddingLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__embedding_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__embedding_layer_params__pack_to_buffer
                     (const CoreML__Specification__EmbeddingLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__embedding_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__EmbeddingLayerParams *
       core_ml__specification__embedding_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__EmbeddingLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__embedding_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__embedding_layer_params__free_unpacked
                     (CoreML__Specification__EmbeddingLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__embedding_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__embedding_ndlayer_params__init
                     (CoreML__Specification__EmbeddingNDLayerParams         *message)
{
  static const CoreML__Specification__EmbeddingNDLayerParams init_value = CORE_ML__SPECIFICATION__EMBEDDING_NDLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__embedding_ndlayer_params__get_packed_size
                     (const CoreML__Specification__EmbeddingNDLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__embedding_ndlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__embedding_ndlayer_params__pack
                     (const CoreML__Specification__EmbeddingNDLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__embedding_ndlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__embedding_ndlayer_params__pack_to_buffer
                     (const CoreML__Specification__EmbeddingNDLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__embedding_ndlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__EmbeddingNDLayerParams *
       core_ml__specification__embedding_ndlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__EmbeddingNDLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__embedding_ndlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__embedding_ndlayer_params__free_unpacked
                     (CoreML__Specification__EmbeddingNDLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__embedding_ndlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__batchnorm_layer_params__init
                     (CoreML__Specification__BatchnormLayerParams         *message)
{
  static const CoreML__Specification__BatchnormLayerParams init_value = CORE_ML__SPECIFICATION__BATCHNORM_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__batchnorm_layer_params__get_packed_size
                     (const CoreML__Specification__BatchnormLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__batchnorm_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__batchnorm_layer_params__pack
                     (const CoreML__Specification__BatchnormLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__batchnorm_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__batchnorm_layer_params__pack_to_buffer
                     (const CoreML__Specification__BatchnormLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__batchnorm_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BatchnormLayerParams *
       core_ml__specification__batchnorm_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BatchnormLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__batchnorm_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__batchnorm_layer_params__free_unpacked
                     (CoreML__Specification__BatchnormLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__batchnorm_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__pooling_layer_params__valid_complete_padding__init
                     (CoreML__Specification__PoolingLayerParams__ValidCompletePadding         *message)
{
  static const CoreML__Specification__PoolingLayerParams__ValidCompletePadding init_value = CORE_ML__SPECIFICATION__POOLING_LAYER_PARAMS__VALID_COMPLETE_PADDING__INIT;
  *message = init_value;
}
void   core_ml__specification__pooling_layer_params__init
                     (CoreML__Specification__PoolingLayerParams         *message)
{
  static const CoreML__Specification__PoolingLayerParams init_value = CORE_ML__SPECIFICATION__POOLING_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__pooling_layer_params__get_packed_size
                     (const CoreML__Specification__PoolingLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__pooling_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__pooling_layer_params__pack
                     (const CoreML__Specification__PoolingLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__pooling_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__pooling_layer_params__pack_to_buffer
                     (const CoreML__Specification__PoolingLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__pooling_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__PoolingLayerParams *
       core_ml__specification__pooling_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__PoolingLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__pooling_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__pooling_layer_params__free_unpacked
                     (CoreML__Specification__PoolingLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__pooling_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__pooling3_dlayer_params__init
                     (CoreML__Specification__Pooling3DLayerParams         *message)
{
  static const CoreML__Specification__Pooling3DLayerParams init_value = CORE_ML__SPECIFICATION__POOLING3_DLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__pooling3_dlayer_params__get_packed_size
                     (const CoreML__Specification__Pooling3DLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__pooling3_dlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__pooling3_dlayer_params__pack
                     (const CoreML__Specification__Pooling3DLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__pooling3_dlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__pooling3_dlayer_params__pack_to_buffer
                     (const CoreML__Specification__Pooling3DLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__pooling3_dlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__Pooling3DLayerParams *
       core_ml__specification__pooling3_dlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__Pooling3DLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__pooling3_dlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__pooling3_dlayer_params__free_unpacked
                     (CoreML__Specification__Pooling3DLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__pooling3_dlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__global_pooling3_dlayer_params__init
                     (CoreML__Specification__GlobalPooling3DLayerParams         *message)
{
  static const CoreML__Specification__GlobalPooling3DLayerParams init_value = CORE_ML__SPECIFICATION__GLOBAL_POOLING3_DLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__global_pooling3_dlayer_params__get_packed_size
                     (const CoreML__Specification__GlobalPooling3DLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__global_pooling3_dlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__global_pooling3_dlayer_params__pack
                     (const CoreML__Specification__GlobalPooling3DLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__global_pooling3_dlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__global_pooling3_dlayer_params__pack_to_buffer
                     (const CoreML__Specification__GlobalPooling3DLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__global_pooling3_dlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GlobalPooling3DLayerParams *
       core_ml__specification__global_pooling3_dlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GlobalPooling3DLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__global_pooling3_dlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__global_pooling3_dlayer_params__free_unpacked
                     (CoreML__Specification__GlobalPooling3DLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__global_pooling3_dlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__padding_layer_params__padding_constant__init
                     (CoreML__Specification__PaddingLayerParams__PaddingConstant         *message)
{
  static const CoreML__Specification__PaddingLayerParams__PaddingConstant init_value = CORE_ML__SPECIFICATION__PADDING_LAYER_PARAMS__PADDING_CONSTANT__INIT;
  *message = init_value;
}
void   core_ml__specification__padding_layer_params__padding_reflection__init
                     (CoreML__Specification__PaddingLayerParams__PaddingReflection         *message)
{
  static const CoreML__Specification__PaddingLayerParams__PaddingReflection init_value = CORE_ML__SPECIFICATION__PADDING_LAYER_PARAMS__PADDING_REFLECTION__INIT;
  *message = init_value;
}
void   core_ml__specification__padding_layer_params__padding_replication__init
                     (CoreML__Specification__PaddingLayerParams__PaddingReplication         *message)
{
  static const CoreML__Specification__PaddingLayerParams__PaddingReplication init_value = CORE_ML__SPECIFICATION__PADDING_LAYER_PARAMS__PADDING_REPLICATION__INIT;
  *message = init_value;
}
void   core_ml__specification__padding_layer_params__init
                     (CoreML__Specification__PaddingLayerParams         *message)
{
  static const CoreML__Specification__PaddingLayerParams init_value = CORE_ML__SPECIFICATION__PADDING_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__padding_layer_params__get_packed_size
                     (const CoreML__Specification__PaddingLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__padding_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__padding_layer_params__pack
                     (const CoreML__Specification__PaddingLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__padding_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__padding_layer_params__pack_to_buffer
                     (const CoreML__Specification__PaddingLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__padding_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__PaddingLayerParams *
       core_ml__specification__padding_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__PaddingLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__padding_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__padding_layer_params__free_unpacked
                     (CoreML__Specification__PaddingLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__padding_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__concat_layer_params__init
                     (CoreML__Specification__ConcatLayerParams         *message)
{
  static const CoreML__Specification__ConcatLayerParams init_value = CORE_ML__SPECIFICATION__CONCAT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__concat_layer_params__get_packed_size
                     (const CoreML__Specification__ConcatLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__concat_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__concat_layer_params__pack
                     (const CoreML__Specification__ConcatLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__concat_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__concat_layer_params__pack_to_buffer
                     (const CoreML__Specification__ConcatLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__concat_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ConcatLayerParams *
       core_ml__specification__concat_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ConcatLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__concat_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__concat_layer_params__free_unpacked
                     (CoreML__Specification__ConcatLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__concat_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__lrnlayer_params__init
                     (CoreML__Specification__LRNLayerParams         *message)
{
  static const CoreML__Specification__LRNLayerParams init_value = CORE_ML__SPECIFICATION__LRNLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__lrnlayer_params__get_packed_size
                     (const CoreML__Specification__LRNLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__lrnlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__lrnlayer_params__pack
                     (const CoreML__Specification__LRNLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__lrnlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__lrnlayer_params__pack_to_buffer
                     (const CoreML__Specification__LRNLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__lrnlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LRNLayerParams *
       core_ml__specification__lrnlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LRNLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__lrnlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__lrnlayer_params__free_unpacked
                     (CoreML__Specification__LRNLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__lrnlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__softmax_layer_params__init
                     (CoreML__Specification__SoftmaxLayerParams         *message)
{
  static const CoreML__Specification__SoftmaxLayerParams init_value = CORE_ML__SPECIFICATION__SOFTMAX_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__softmax_layer_params__get_packed_size
                     (const CoreML__Specification__SoftmaxLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__softmax_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__softmax_layer_params__pack
                     (const CoreML__Specification__SoftmaxLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__softmax_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__softmax_layer_params__pack_to_buffer
                     (const CoreML__Specification__SoftmaxLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__softmax_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SoftmaxLayerParams *
       core_ml__specification__softmax_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SoftmaxLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__softmax_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__softmax_layer_params__free_unpacked
                     (CoreML__Specification__SoftmaxLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__softmax_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__split_layer_params__init
                     (CoreML__Specification__SplitLayerParams         *message)
{
  static const CoreML__Specification__SplitLayerParams init_value = CORE_ML__SPECIFICATION__SPLIT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__split_layer_params__get_packed_size
                     (const CoreML__Specification__SplitLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__split_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__split_layer_params__pack
                     (const CoreML__Specification__SplitLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__split_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__split_layer_params__pack_to_buffer
                     (const CoreML__Specification__SplitLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__split_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SplitLayerParams *
       core_ml__specification__split_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SplitLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__split_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__split_layer_params__free_unpacked
                     (CoreML__Specification__SplitLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__split_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__add_layer_params__init
                     (CoreML__Specification__AddLayerParams         *message)
{
  static const CoreML__Specification__AddLayerParams init_value = CORE_ML__SPECIFICATION__ADD_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__add_layer_params__get_packed_size
                     (const CoreML__Specification__AddLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__add_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__add_layer_params__pack
                     (const CoreML__Specification__AddLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__add_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__add_layer_params__pack_to_buffer
                     (const CoreML__Specification__AddLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__add_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AddLayerParams *
       core_ml__specification__add_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AddLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__add_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__add_layer_params__free_unpacked
                     (CoreML__Specification__AddLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__add_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__multiply_layer_params__init
                     (CoreML__Specification__MultiplyLayerParams         *message)
{
  static const CoreML__Specification__MultiplyLayerParams init_value = CORE_ML__SPECIFICATION__MULTIPLY_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__multiply_layer_params__get_packed_size
                     (const CoreML__Specification__MultiplyLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__multiply_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__multiply_layer_params__pack
                     (const CoreML__Specification__MultiplyLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__multiply_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__multiply_layer_params__pack_to_buffer
                     (const CoreML__Specification__MultiplyLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__multiply_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MultiplyLayerParams *
       core_ml__specification__multiply_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MultiplyLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__multiply_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__multiply_layer_params__free_unpacked
                     (CoreML__Specification__MultiplyLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__multiply_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__unary_function_layer_params__init
                     (CoreML__Specification__UnaryFunctionLayerParams         *message)
{
  static const CoreML__Specification__UnaryFunctionLayerParams init_value = CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__unary_function_layer_params__get_packed_size
                     (const CoreML__Specification__UnaryFunctionLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__unary_function_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__unary_function_layer_params__pack
                     (const CoreML__Specification__UnaryFunctionLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__unary_function_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__unary_function_layer_params__pack_to_buffer
                     (const CoreML__Specification__UnaryFunctionLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__unary_function_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__UnaryFunctionLayerParams *
       core_ml__specification__unary_function_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__UnaryFunctionLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__unary_function_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__unary_function_layer_params__free_unpacked
                     (CoreML__Specification__UnaryFunctionLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__unary_function_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__upsample_layer_params__init
                     (CoreML__Specification__UpsampleLayerParams         *message)
{
  static const CoreML__Specification__UpsampleLayerParams init_value = CORE_ML__SPECIFICATION__UPSAMPLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__upsample_layer_params__get_packed_size
                     (const CoreML__Specification__UpsampleLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__upsample_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__upsample_layer_params__pack
                     (const CoreML__Specification__UpsampleLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__upsample_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__upsample_layer_params__pack_to_buffer
                     (const CoreML__Specification__UpsampleLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__upsample_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__UpsampleLayerParams *
       core_ml__specification__upsample_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__UpsampleLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__upsample_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__upsample_layer_params__free_unpacked
                     (CoreML__Specification__UpsampleLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__upsample_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__resize_bilinear_layer_params__init
                     (CoreML__Specification__ResizeBilinearLayerParams         *message)
{
  static const CoreML__Specification__ResizeBilinearLayerParams init_value = CORE_ML__SPECIFICATION__RESIZE_BILINEAR_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__resize_bilinear_layer_params__get_packed_size
                     (const CoreML__Specification__ResizeBilinearLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__resize_bilinear_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__resize_bilinear_layer_params__pack
                     (const CoreML__Specification__ResizeBilinearLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__resize_bilinear_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__resize_bilinear_layer_params__pack_to_buffer
                     (const CoreML__Specification__ResizeBilinearLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__resize_bilinear_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ResizeBilinearLayerParams *
       core_ml__specification__resize_bilinear_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ResizeBilinearLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__resize_bilinear_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__resize_bilinear_layer_params__free_unpacked
                     (CoreML__Specification__ResizeBilinearLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__resize_bilinear_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__crop_resize_layer_params__init
                     (CoreML__Specification__CropResizeLayerParams         *message)
{
  static const CoreML__Specification__CropResizeLayerParams init_value = CORE_ML__SPECIFICATION__CROP_RESIZE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__crop_resize_layer_params__get_packed_size
                     (const CoreML__Specification__CropResizeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__crop_resize_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__crop_resize_layer_params__pack
                     (const CoreML__Specification__CropResizeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__crop_resize_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__crop_resize_layer_params__pack_to_buffer
                     (const CoreML__Specification__CropResizeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__crop_resize_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CropResizeLayerParams *
       core_ml__specification__crop_resize_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CropResizeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__crop_resize_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__crop_resize_layer_params__free_unpacked
                     (CoreML__Specification__CropResizeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__crop_resize_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__bias_layer_params__init
                     (CoreML__Specification__BiasLayerParams         *message)
{
  static const CoreML__Specification__BiasLayerParams init_value = CORE_ML__SPECIFICATION__BIAS_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__bias_layer_params__get_packed_size
                     (const CoreML__Specification__BiasLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__bias_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__bias_layer_params__pack
                     (const CoreML__Specification__BiasLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__bias_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__bias_layer_params__pack_to_buffer
                     (const CoreML__Specification__BiasLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__bias_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BiasLayerParams *
       core_ml__specification__bias_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BiasLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__bias_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__bias_layer_params__free_unpacked
                     (CoreML__Specification__BiasLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__bias_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__scale_layer_params__init
                     (CoreML__Specification__ScaleLayerParams         *message)
{
  static const CoreML__Specification__ScaleLayerParams init_value = CORE_ML__SPECIFICATION__SCALE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__scale_layer_params__get_packed_size
                     (const CoreML__Specification__ScaleLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__scale_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__scale_layer_params__pack
                     (const CoreML__Specification__ScaleLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__scale_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__scale_layer_params__pack_to_buffer
                     (const CoreML__Specification__ScaleLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__scale_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ScaleLayerParams *
       core_ml__specification__scale_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ScaleLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__scale_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__scale_layer_params__free_unpacked
                     (CoreML__Specification__ScaleLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__scale_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__load_constant_layer_params__init
                     (CoreML__Specification__LoadConstantLayerParams         *message)
{
  static const CoreML__Specification__LoadConstantLayerParams init_value = CORE_ML__SPECIFICATION__LOAD_CONSTANT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__load_constant_layer_params__get_packed_size
                     (const CoreML__Specification__LoadConstantLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__load_constant_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__load_constant_layer_params__pack
                     (const CoreML__Specification__LoadConstantLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__load_constant_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__load_constant_layer_params__pack_to_buffer
                     (const CoreML__Specification__LoadConstantLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__load_constant_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LoadConstantLayerParams *
       core_ml__specification__load_constant_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LoadConstantLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__load_constant_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__load_constant_layer_params__free_unpacked
                     (CoreML__Specification__LoadConstantLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__load_constant_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__l2_normalize_layer_params__init
                     (CoreML__Specification__L2NormalizeLayerParams         *message)
{
  static const CoreML__Specification__L2NormalizeLayerParams init_value = CORE_ML__SPECIFICATION__L2_NORMALIZE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__l2_normalize_layer_params__get_packed_size
                     (const CoreML__Specification__L2NormalizeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__l2_normalize_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__l2_normalize_layer_params__pack
                     (const CoreML__Specification__L2NormalizeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__l2_normalize_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__l2_normalize_layer_params__pack_to_buffer
                     (const CoreML__Specification__L2NormalizeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__l2_normalize_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__L2NormalizeLayerParams *
       core_ml__specification__l2_normalize_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__L2NormalizeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__l2_normalize_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__l2_normalize_layer_params__free_unpacked
                     (CoreML__Specification__L2NormalizeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__l2_normalize_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__flatten_layer_params__init
                     (CoreML__Specification__FlattenLayerParams         *message)
{
  static const CoreML__Specification__FlattenLayerParams init_value = CORE_ML__SPECIFICATION__FLATTEN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__flatten_layer_params__get_packed_size
                     (const CoreML__Specification__FlattenLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__flatten_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__flatten_layer_params__pack
                     (const CoreML__Specification__FlattenLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__flatten_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__flatten_layer_params__pack_to_buffer
                     (const CoreML__Specification__FlattenLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__flatten_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__FlattenLayerParams *
       core_ml__specification__flatten_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__FlattenLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__flatten_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__flatten_layer_params__free_unpacked
                     (CoreML__Specification__FlattenLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__flatten_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reshape_layer_params__init
                     (CoreML__Specification__ReshapeLayerParams         *message)
{
  static const CoreML__Specification__ReshapeLayerParams init_value = CORE_ML__SPECIFICATION__RESHAPE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reshape_layer_params__get_packed_size
                     (const CoreML__Specification__ReshapeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reshape_layer_params__pack
                     (const CoreML__Specification__ReshapeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reshape_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReshapeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReshapeLayerParams *
       core_ml__specification__reshape_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReshapeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reshape_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reshape_layer_params__free_unpacked
                     (CoreML__Specification__ReshapeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reshape_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__permute_layer_params__init
                     (CoreML__Specification__PermuteLayerParams         *message)
{
  static const CoreML__Specification__PermuteLayerParams init_value = CORE_ML__SPECIFICATION__PERMUTE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__permute_layer_params__get_packed_size
                     (const CoreML__Specification__PermuteLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__permute_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__permute_layer_params__pack
                     (const CoreML__Specification__PermuteLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__permute_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__permute_layer_params__pack_to_buffer
                     (const CoreML__Specification__PermuteLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__permute_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__PermuteLayerParams *
       core_ml__specification__permute_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__PermuteLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__permute_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__permute_layer_params__free_unpacked
                     (CoreML__Specification__PermuteLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__permute_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reorganize_data_layer_params__init
                     (CoreML__Specification__ReorganizeDataLayerParams         *message)
{
  static const CoreML__Specification__ReorganizeDataLayerParams init_value = CORE_ML__SPECIFICATION__REORGANIZE_DATA_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reorganize_data_layer_params__get_packed_size
                     (const CoreML__Specification__ReorganizeDataLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reorganize_data_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reorganize_data_layer_params__pack
                     (const CoreML__Specification__ReorganizeDataLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reorganize_data_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reorganize_data_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReorganizeDataLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reorganize_data_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReorganizeDataLayerParams *
       core_ml__specification__reorganize_data_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReorganizeDataLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reorganize_data_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reorganize_data_layer_params__free_unpacked
                     (CoreML__Specification__ReorganizeDataLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reorganize_data_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__slice_layer_params__init
                     (CoreML__Specification__SliceLayerParams         *message)
{
  static const CoreML__Specification__SliceLayerParams init_value = CORE_ML__SPECIFICATION__SLICE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__slice_layer_params__get_packed_size
                     (const CoreML__Specification__SliceLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__slice_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__slice_layer_params__pack
                     (const CoreML__Specification__SliceLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__slice_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__slice_layer_params__pack_to_buffer
                     (const CoreML__Specification__SliceLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__slice_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SliceLayerParams *
       core_ml__specification__slice_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SliceLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__slice_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__slice_layer_params__free_unpacked
                     (CoreML__Specification__SliceLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__slice_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_layer_params__init
                     (CoreML__Specification__ReduceLayerParams         *message)
{
  static const CoreML__Specification__ReduceLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_layer_params__pack
                     (const CoreML__Specification__ReduceLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceLayerParams *
       core_ml__specification__reduce_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_layer_params__free_unpacked
                     (CoreML__Specification__ReduceLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__crop_layer_params__init
                     (CoreML__Specification__CropLayerParams         *message)
{
  static const CoreML__Specification__CropLayerParams init_value = CORE_ML__SPECIFICATION__CROP_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__crop_layer_params__get_packed_size
                     (const CoreML__Specification__CropLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__crop_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__crop_layer_params__pack
                     (const CoreML__Specification__CropLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__crop_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__crop_layer_params__pack_to_buffer
                     (const CoreML__Specification__CropLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__crop_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CropLayerParams *
       core_ml__specification__crop_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CropLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__crop_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__crop_layer_params__free_unpacked
                     (CoreML__Specification__CropLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__crop_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__average_layer_params__init
                     (CoreML__Specification__AverageLayerParams         *message)
{
  static const CoreML__Specification__AverageLayerParams init_value = CORE_ML__SPECIFICATION__AVERAGE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__average_layer_params__get_packed_size
                     (const CoreML__Specification__AverageLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__average_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__average_layer_params__pack
                     (const CoreML__Specification__AverageLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__average_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__average_layer_params__pack_to_buffer
                     (const CoreML__Specification__AverageLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__average_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AverageLayerParams *
       core_ml__specification__average_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AverageLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__average_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__average_layer_params__free_unpacked
                     (CoreML__Specification__AverageLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__average_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__max_layer_params__init
                     (CoreML__Specification__MaxLayerParams         *message)
{
  static const CoreML__Specification__MaxLayerParams init_value = CORE_ML__SPECIFICATION__MAX_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__max_layer_params__get_packed_size
                     (const CoreML__Specification__MaxLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__max_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__max_layer_params__pack
                     (const CoreML__Specification__MaxLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__max_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__max_layer_params__pack_to_buffer
                     (const CoreML__Specification__MaxLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__max_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MaxLayerParams *
       core_ml__specification__max_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MaxLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__max_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__max_layer_params__free_unpacked
                     (CoreML__Specification__MaxLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__max_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__min_layer_params__init
                     (CoreML__Specification__MinLayerParams         *message)
{
  static const CoreML__Specification__MinLayerParams init_value = CORE_ML__SPECIFICATION__MIN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__min_layer_params__get_packed_size
                     (const CoreML__Specification__MinLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__min_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__min_layer_params__pack
                     (const CoreML__Specification__MinLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__min_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__min_layer_params__pack_to_buffer
                     (const CoreML__Specification__MinLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__min_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MinLayerParams *
       core_ml__specification__min_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MinLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__min_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__min_layer_params__free_unpacked
                     (CoreML__Specification__MinLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__min_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__dot_product_layer_params__init
                     (CoreML__Specification__DotProductLayerParams         *message)
{
  static const CoreML__Specification__DotProductLayerParams init_value = CORE_ML__SPECIFICATION__DOT_PRODUCT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__dot_product_layer_params__get_packed_size
                     (const CoreML__Specification__DotProductLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__dot_product_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__dot_product_layer_params__pack
                     (const CoreML__Specification__DotProductLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__dot_product_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__dot_product_layer_params__pack_to_buffer
                     (const CoreML__Specification__DotProductLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__dot_product_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__DotProductLayerParams *
       core_ml__specification__dot_product_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__DotProductLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__dot_product_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__dot_product_layer_params__free_unpacked
                     (CoreML__Specification__DotProductLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__dot_product_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__mean_variance_normalize_layer_params__init
                     (CoreML__Specification__MeanVarianceNormalizeLayerParams         *message)
{
  static const CoreML__Specification__MeanVarianceNormalizeLayerParams init_value = CORE_ML__SPECIFICATION__MEAN_VARIANCE_NORMALIZE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__mean_variance_normalize_layer_params__get_packed_size
                     (const CoreML__Specification__MeanVarianceNormalizeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__mean_variance_normalize_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__mean_variance_normalize_layer_params__pack
                     (const CoreML__Specification__MeanVarianceNormalizeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__mean_variance_normalize_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__mean_variance_normalize_layer_params__pack_to_buffer
                     (const CoreML__Specification__MeanVarianceNormalizeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__mean_variance_normalize_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MeanVarianceNormalizeLayerParams *
       core_ml__specification__mean_variance_normalize_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MeanVarianceNormalizeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__mean_variance_normalize_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__mean_variance_normalize_layer_params__free_unpacked
                     (CoreML__Specification__MeanVarianceNormalizeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__mean_variance_normalize_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__sequence_repeat_layer_params__init
                     (CoreML__Specification__SequenceRepeatLayerParams         *message)
{
  static const CoreML__Specification__SequenceRepeatLayerParams init_value = CORE_ML__SPECIFICATION__SEQUENCE_REPEAT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__sequence_repeat_layer_params__get_packed_size
                     (const CoreML__Specification__SequenceRepeatLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__sequence_repeat_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__sequence_repeat_layer_params__pack
                     (const CoreML__Specification__SequenceRepeatLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__sequence_repeat_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__sequence_repeat_layer_params__pack_to_buffer
                     (const CoreML__Specification__SequenceRepeatLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__sequence_repeat_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SequenceRepeatLayerParams *
       core_ml__specification__sequence_repeat_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SequenceRepeatLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__sequence_repeat_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__sequence_repeat_layer_params__free_unpacked
                     (CoreML__Specification__SequenceRepeatLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__sequence_repeat_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__simple_recurrent_layer_params__init
                     (CoreML__Specification__SimpleRecurrentLayerParams         *message)
{
  static const CoreML__Specification__SimpleRecurrentLayerParams init_value = CORE_ML__SPECIFICATION__SIMPLE_RECURRENT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__simple_recurrent_layer_params__get_packed_size
                     (const CoreML__Specification__SimpleRecurrentLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__simple_recurrent_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__simple_recurrent_layer_params__pack
                     (const CoreML__Specification__SimpleRecurrentLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__simple_recurrent_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__simple_recurrent_layer_params__pack_to_buffer
                     (const CoreML__Specification__SimpleRecurrentLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__simple_recurrent_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SimpleRecurrentLayerParams *
       core_ml__specification__simple_recurrent_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SimpleRecurrentLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__simple_recurrent_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__simple_recurrent_layer_params__free_unpacked
                     (CoreML__Specification__SimpleRecurrentLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__simple_recurrent_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__grulayer_params__init
                     (CoreML__Specification__GRULayerParams         *message)
{
  static const CoreML__Specification__GRULayerParams init_value = CORE_ML__SPECIFICATION__GRULAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__grulayer_params__get_packed_size
                     (const CoreML__Specification__GRULayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__grulayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__grulayer_params__pack
                     (const CoreML__Specification__GRULayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__grulayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__grulayer_params__pack_to_buffer
                     (const CoreML__Specification__GRULayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__grulayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GRULayerParams *
       core_ml__specification__grulayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GRULayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__grulayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__grulayer_params__free_unpacked
                     (CoreML__Specification__GRULayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__grulayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__lstmparams__init
                     (CoreML__Specification__LSTMParams         *message)
{
  static const CoreML__Specification__LSTMParams init_value = CORE_ML__SPECIFICATION__LSTMPARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__lstmparams__get_packed_size
                     (const CoreML__Specification__LSTMParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__lstmparams__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__lstmparams__pack
                     (const CoreML__Specification__LSTMParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__lstmparams__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__lstmparams__pack_to_buffer
                     (const CoreML__Specification__LSTMParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__lstmparams__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LSTMParams *
       core_ml__specification__lstmparams__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LSTMParams *)
     protobuf_c_message_unpack (&core_ml__specification__lstmparams__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__lstmparams__free_unpacked
                     (CoreML__Specification__LSTMParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__lstmparams__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__lstmweight_params__init
                     (CoreML__Specification__LSTMWeightParams         *message)
{
  static const CoreML__Specification__LSTMWeightParams init_value = CORE_ML__SPECIFICATION__LSTMWEIGHT_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__lstmweight_params__get_packed_size
                     (const CoreML__Specification__LSTMWeightParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__lstmweight_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__lstmweight_params__pack
                     (const CoreML__Specification__LSTMWeightParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__lstmweight_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__lstmweight_params__pack_to_buffer
                     (const CoreML__Specification__LSTMWeightParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__lstmweight_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LSTMWeightParams *
       core_ml__specification__lstmweight_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LSTMWeightParams *)
     protobuf_c_message_unpack (&core_ml__specification__lstmweight_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__lstmweight_params__free_unpacked
                     (CoreML__Specification__LSTMWeightParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__lstmweight_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__uni_directional_lstmlayer_params__init
                     (CoreML__Specification__UniDirectionalLSTMLayerParams         *message)
{
  static const CoreML__Specification__UniDirectionalLSTMLayerParams init_value = CORE_ML__SPECIFICATION__UNI_DIRECTIONAL_LSTMLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__uni_directional_lstmlayer_params__get_packed_size
                     (const CoreML__Specification__UniDirectionalLSTMLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__uni_directional_lstmlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__uni_directional_lstmlayer_params__pack
                     (const CoreML__Specification__UniDirectionalLSTMLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__uni_directional_lstmlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__uni_directional_lstmlayer_params__pack_to_buffer
                     (const CoreML__Specification__UniDirectionalLSTMLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__uni_directional_lstmlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__UniDirectionalLSTMLayerParams *
       core_ml__specification__uni_directional_lstmlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__UniDirectionalLSTMLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__uni_directional_lstmlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__uni_directional_lstmlayer_params__free_unpacked
                     (CoreML__Specification__UniDirectionalLSTMLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__uni_directional_lstmlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__bi_directional_lstmlayer_params__init
                     (CoreML__Specification__BiDirectionalLSTMLayerParams         *message)
{
  static const CoreML__Specification__BiDirectionalLSTMLayerParams init_value = CORE_ML__SPECIFICATION__BI_DIRECTIONAL_LSTMLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__bi_directional_lstmlayer_params__get_packed_size
                     (const CoreML__Specification__BiDirectionalLSTMLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__bi_directional_lstmlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__bi_directional_lstmlayer_params__pack
                     (const CoreML__Specification__BiDirectionalLSTMLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__bi_directional_lstmlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__bi_directional_lstmlayer_params__pack_to_buffer
                     (const CoreML__Specification__BiDirectionalLSTMLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__bi_directional_lstmlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BiDirectionalLSTMLayerParams *
       core_ml__specification__bi_directional_lstmlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BiDirectionalLSTMLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__bi_directional_lstmlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__bi_directional_lstmlayer_params__free_unpacked
                     (CoreML__Specification__BiDirectionalLSTMLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__bi_directional_lstmlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__custom_layer_params__custom_layer_param_value__init
                     (CoreML__Specification__CustomLayerParams__CustomLayerParamValue         *message)
{
  static const CoreML__Specification__CustomLayerParams__CustomLayerParamValue init_value = CORE_ML__SPECIFICATION__CUSTOM_LAYER_PARAMS__CUSTOM_LAYER_PARAM_VALUE__INIT;
  *message = init_value;
}
void   core_ml__specification__custom_layer_params__parameters_entry__init
                     (CoreML__Specification__CustomLayerParams__ParametersEntry         *message)
{
  static const CoreML__Specification__CustomLayerParams__ParametersEntry init_value = CORE_ML__SPECIFICATION__CUSTOM_LAYER_PARAMS__PARAMETERS_ENTRY__INIT;
  *message = init_value;
}
void   core_ml__specification__custom_layer_params__init
                     (CoreML__Specification__CustomLayerParams         *message)
{
  static const CoreML__Specification__CustomLayerParams init_value = CORE_ML__SPECIFICATION__CUSTOM_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__custom_layer_params__get_packed_size
                     (const CoreML__Specification__CustomLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__custom_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__custom_layer_params__pack
                     (const CoreML__Specification__CustomLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__custom_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__custom_layer_params__pack_to_buffer
                     (const CoreML__Specification__CustomLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__custom_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CustomLayerParams *
       core_ml__specification__custom_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CustomLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__custom_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__custom_layer_params__free_unpacked
                     (CoreML__Specification__CustomLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__custom_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__transpose_layer_params__init
                     (CoreML__Specification__TransposeLayerParams         *message)
{
  static const CoreML__Specification__TransposeLayerParams init_value = CORE_ML__SPECIFICATION__TRANSPOSE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__transpose_layer_params__get_packed_size
                     (const CoreML__Specification__TransposeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__transpose_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__transpose_layer_params__pack
                     (const CoreML__Specification__TransposeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__transpose_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__transpose_layer_params__pack_to_buffer
                     (const CoreML__Specification__TransposeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__transpose_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__TransposeLayerParams *
       core_ml__specification__transpose_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__TransposeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__transpose_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__transpose_layer_params__free_unpacked
                     (CoreML__Specification__TransposeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__transpose_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__batched_mat_mul_layer_params__init
                     (CoreML__Specification__BatchedMatMulLayerParams         *message)
{
  static const CoreML__Specification__BatchedMatMulLayerParams init_value = CORE_ML__SPECIFICATION__BATCHED_MAT_MUL_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__batched_mat_mul_layer_params__get_packed_size
                     (const CoreML__Specification__BatchedMatMulLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__batched_mat_mul_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__batched_mat_mul_layer_params__pack
                     (const CoreML__Specification__BatchedMatMulLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__batched_mat_mul_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__batched_mat_mul_layer_params__pack_to_buffer
                     (const CoreML__Specification__BatchedMatMulLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__batched_mat_mul_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BatchedMatMulLayerParams *
       core_ml__specification__batched_mat_mul_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BatchedMatMulLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__batched_mat_mul_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__batched_mat_mul_layer_params__free_unpacked
                     (CoreML__Specification__BatchedMatMulLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__batched_mat_mul_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__concat_ndlayer_params__init
                     (CoreML__Specification__ConcatNDLayerParams         *message)
{
  static const CoreML__Specification__ConcatNDLayerParams init_value = CORE_ML__SPECIFICATION__CONCAT_NDLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__concat_ndlayer_params__get_packed_size
                     (const CoreML__Specification__ConcatNDLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__concat_ndlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__concat_ndlayer_params__pack
                     (const CoreML__Specification__ConcatNDLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__concat_ndlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__concat_ndlayer_params__pack_to_buffer
                     (const CoreML__Specification__ConcatNDLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__concat_ndlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ConcatNDLayerParams *
       core_ml__specification__concat_ndlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ConcatNDLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__concat_ndlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__concat_ndlayer_params__free_unpacked
                     (CoreML__Specification__ConcatNDLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__concat_ndlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__softmax_ndlayer_params__init
                     (CoreML__Specification__SoftmaxNDLayerParams         *message)
{
  static const CoreML__Specification__SoftmaxNDLayerParams init_value = CORE_ML__SPECIFICATION__SOFTMAX_NDLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__softmax_ndlayer_params__get_packed_size
                     (const CoreML__Specification__SoftmaxNDLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__softmax_ndlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__softmax_ndlayer_params__pack
                     (const CoreML__Specification__SoftmaxNDLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__softmax_ndlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__softmax_ndlayer_params__pack_to_buffer
                     (const CoreML__Specification__SoftmaxNDLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__softmax_ndlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SoftmaxNDLayerParams *
       core_ml__specification__softmax_ndlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SoftmaxNDLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__softmax_ndlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__softmax_ndlayer_params__free_unpacked
                     (CoreML__Specification__SoftmaxNDLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__softmax_ndlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reverse_layer_params__init
                     (CoreML__Specification__ReverseLayerParams         *message)
{
  static const CoreML__Specification__ReverseLayerParams init_value = CORE_ML__SPECIFICATION__REVERSE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reverse_layer_params__get_packed_size
                     (const CoreML__Specification__ReverseLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reverse_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reverse_layer_params__pack
                     (const CoreML__Specification__ReverseLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reverse_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reverse_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReverseLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reverse_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReverseLayerParams *
       core_ml__specification__reverse_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReverseLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reverse_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reverse_layer_params__free_unpacked
                     (CoreML__Specification__ReverseLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reverse_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reverse_seq_layer_params__init
                     (CoreML__Specification__ReverseSeqLayerParams         *message)
{
  static const CoreML__Specification__ReverseSeqLayerParams init_value = CORE_ML__SPECIFICATION__REVERSE_SEQ_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reverse_seq_layer_params__get_packed_size
                     (const CoreML__Specification__ReverseSeqLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reverse_seq_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reverse_seq_layer_params__pack
                     (const CoreML__Specification__ReverseSeqLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reverse_seq_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reverse_seq_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReverseSeqLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reverse_seq_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReverseSeqLayerParams *
       core_ml__specification__reverse_seq_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReverseSeqLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reverse_seq_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reverse_seq_layer_params__free_unpacked
                     (CoreML__Specification__ReverseSeqLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reverse_seq_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__load_constant_ndlayer_params__init
                     (CoreML__Specification__LoadConstantNDLayerParams         *message)
{
  static const CoreML__Specification__LoadConstantNDLayerParams init_value = CORE_ML__SPECIFICATION__LOAD_CONSTANT_NDLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__load_constant_ndlayer_params__get_packed_size
                     (const CoreML__Specification__LoadConstantNDLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__load_constant_ndlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__load_constant_ndlayer_params__pack
                     (const CoreML__Specification__LoadConstantNDLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__load_constant_ndlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__load_constant_ndlayer_params__pack_to_buffer
                     (const CoreML__Specification__LoadConstantNDLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__load_constant_ndlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LoadConstantNDLayerParams *
       core_ml__specification__load_constant_ndlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LoadConstantNDLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__load_constant_ndlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__load_constant_ndlayer_params__free_unpacked
                     (CoreML__Specification__LoadConstantNDLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__load_constant_ndlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__fill_like_layer_params__init
                     (CoreML__Specification__FillLikeLayerParams         *message)
{
  static const CoreML__Specification__FillLikeLayerParams init_value = CORE_ML__SPECIFICATION__FILL_LIKE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__fill_like_layer_params__get_packed_size
                     (const CoreML__Specification__FillLikeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__fill_like_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__fill_like_layer_params__pack
                     (const CoreML__Specification__FillLikeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__fill_like_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__fill_like_layer_params__pack_to_buffer
                     (const CoreML__Specification__FillLikeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__fill_like_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__FillLikeLayerParams *
       core_ml__specification__fill_like_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__FillLikeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__fill_like_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__fill_like_layer_params__free_unpacked
                     (CoreML__Specification__FillLikeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__fill_like_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__fill_static_layer_params__init
                     (CoreML__Specification__FillStaticLayerParams         *message)
{
  static const CoreML__Specification__FillStaticLayerParams init_value = CORE_ML__SPECIFICATION__FILL_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__fill_static_layer_params__get_packed_size
                     (const CoreML__Specification__FillStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__fill_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__fill_static_layer_params__pack
                     (const CoreML__Specification__FillStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__fill_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__fill_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__FillStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__fill_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__FillStaticLayerParams *
       core_ml__specification__fill_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__FillStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__fill_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__fill_static_layer_params__free_unpacked
                     (CoreML__Specification__FillStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__fill_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__fill_dynamic_layer_params__init
                     (CoreML__Specification__FillDynamicLayerParams         *message)
{
  static const CoreML__Specification__FillDynamicLayerParams init_value = CORE_ML__SPECIFICATION__FILL_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__fill_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__FillDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__fill_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__fill_dynamic_layer_params__pack
                     (const CoreML__Specification__FillDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__fill_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__fill_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__FillDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__fill_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__FillDynamicLayerParams *
       core_ml__specification__fill_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__FillDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__fill_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__fill_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__FillDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__fill_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__where_broadcastable_layer_params__init
                     (CoreML__Specification__WhereBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__WhereBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__WHERE_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__where_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__WhereBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__where_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__where_broadcastable_layer_params__pack
                     (const CoreML__Specification__WhereBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__where_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__where_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__WhereBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__where_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__WhereBroadcastableLayerParams *
       core_ml__specification__where_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__WhereBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__where_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__where_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__WhereBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__where_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__sin_layer_params__init
                     (CoreML__Specification__SinLayerParams         *message)
{
  static const CoreML__Specification__SinLayerParams init_value = CORE_ML__SPECIFICATION__SIN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__sin_layer_params__get_packed_size
                     (const CoreML__Specification__SinLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__sin_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__sin_layer_params__pack
                     (const CoreML__Specification__SinLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__sin_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__sin_layer_params__pack_to_buffer
                     (const CoreML__Specification__SinLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__sin_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SinLayerParams *
       core_ml__specification__sin_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SinLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__sin_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__sin_layer_params__free_unpacked
                     (CoreML__Specification__SinLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__sin_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__cos_layer_params__init
                     (CoreML__Specification__CosLayerParams         *message)
{
  static const CoreML__Specification__CosLayerParams init_value = CORE_ML__SPECIFICATION__COS_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__cos_layer_params__get_packed_size
                     (const CoreML__Specification__CosLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__cos_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__cos_layer_params__pack
                     (const CoreML__Specification__CosLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__cos_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__cos_layer_params__pack_to_buffer
                     (const CoreML__Specification__CosLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__cos_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CosLayerParams *
       core_ml__specification__cos_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CosLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__cos_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__cos_layer_params__free_unpacked
                     (CoreML__Specification__CosLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__cos_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__tan_layer_params__init
                     (CoreML__Specification__TanLayerParams         *message)
{
  static const CoreML__Specification__TanLayerParams init_value = CORE_ML__SPECIFICATION__TAN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__tan_layer_params__get_packed_size
                     (const CoreML__Specification__TanLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__tan_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__tan_layer_params__pack
                     (const CoreML__Specification__TanLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__tan_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__tan_layer_params__pack_to_buffer
                     (const CoreML__Specification__TanLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__tan_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__TanLayerParams *
       core_ml__specification__tan_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__TanLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__tan_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__tan_layer_params__free_unpacked
                     (CoreML__Specification__TanLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__tan_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__asin_layer_params__init
                     (CoreML__Specification__AsinLayerParams         *message)
{
  static const CoreML__Specification__AsinLayerParams init_value = CORE_ML__SPECIFICATION__ASIN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__asin_layer_params__get_packed_size
                     (const CoreML__Specification__AsinLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__asin_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__asin_layer_params__pack
                     (const CoreML__Specification__AsinLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__asin_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__asin_layer_params__pack_to_buffer
                     (const CoreML__Specification__AsinLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__asin_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AsinLayerParams *
       core_ml__specification__asin_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AsinLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__asin_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__asin_layer_params__free_unpacked
                     (CoreML__Specification__AsinLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__asin_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__acos_layer_params__init
                     (CoreML__Specification__AcosLayerParams         *message)
{
  static const CoreML__Specification__AcosLayerParams init_value = CORE_ML__SPECIFICATION__ACOS_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__acos_layer_params__get_packed_size
                     (const CoreML__Specification__AcosLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__acos_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__acos_layer_params__pack
                     (const CoreML__Specification__AcosLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__acos_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__acos_layer_params__pack_to_buffer
                     (const CoreML__Specification__AcosLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__acos_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AcosLayerParams *
       core_ml__specification__acos_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AcosLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__acos_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__acos_layer_params__free_unpacked
                     (CoreML__Specification__AcosLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__acos_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__atan_layer_params__init
                     (CoreML__Specification__AtanLayerParams         *message)
{
  static const CoreML__Specification__AtanLayerParams init_value = CORE_ML__SPECIFICATION__ATAN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__atan_layer_params__get_packed_size
                     (const CoreML__Specification__AtanLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__atan_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__atan_layer_params__pack
                     (const CoreML__Specification__AtanLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__atan_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__atan_layer_params__pack_to_buffer
                     (const CoreML__Specification__AtanLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__atan_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AtanLayerParams *
       core_ml__specification__atan_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AtanLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__atan_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__atan_layer_params__free_unpacked
                     (CoreML__Specification__AtanLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__atan_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__sinh_layer_params__init
                     (CoreML__Specification__SinhLayerParams         *message)
{
  static const CoreML__Specification__SinhLayerParams init_value = CORE_ML__SPECIFICATION__SINH_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__sinh_layer_params__get_packed_size
                     (const CoreML__Specification__SinhLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__sinh_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__sinh_layer_params__pack
                     (const CoreML__Specification__SinhLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__sinh_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__sinh_layer_params__pack_to_buffer
                     (const CoreML__Specification__SinhLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__sinh_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SinhLayerParams *
       core_ml__specification__sinh_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SinhLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__sinh_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__sinh_layer_params__free_unpacked
                     (CoreML__Specification__SinhLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__sinh_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__cosh_layer_params__init
                     (CoreML__Specification__CoshLayerParams         *message)
{
  static const CoreML__Specification__CoshLayerParams init_value = CORE_ML__SPECIFICATION__COSH_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__cosh_layer_params__get_packed_size
                     (const CoreML__Specification__CoshLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__cosh_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__cosh_layer_params__pack
                     (const CoreML__Specification__CoshLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__cosh_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__cosh_layer_params__pack_to_buffer
                     (const CoreML__Specification__CoshLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__cosh_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CoshLayerParams *
       core_ml__specification__cosh_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CoshLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__cosh_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__cosh_layer_params__free_unpacked
                     (CoreML__Specification__CoshLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__cosh_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__tanh_layer_params__init
                     (CoreML__Specification__TanhLayerParams         *message)
{
  static const CoreML__Specification__TanhLayerParams init_value = CORE_ML__SPECIFICATION__TANH_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__tanh_layer_params__get_packed_size
                     (const CoreML__Specification__TanhLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__tanh_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__tanh_layer_params__pack
                     (const CoreML__Specification__TanhLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__tanh_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__tanh_layer_params__pack_to_buffer
                     (const CoreML__Specification__TanhLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__tanh_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__TanhLayerParams *
       core_ml__specification__tanh_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__TanhLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__tanh_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__tanh_layer_params__free_unpacked
                     (CoreML__Specification__TanhLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__tanh_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__asinh_layer_params__init
                     (CoreML__Specification__AsinhLayerParams         *message)
{
  static const CoreML__Specification__AsinhLayerParams init_value = CORE_ML__SPECIFICATION__ASINH_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__asinh_layer_params__get_packed_size
                     (const CoreML__Specification__AsinhLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__asinh_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__asinh_layer_params__pack
                     (const CoreML__Specification__AsinhLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__asinh_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__asinh_layer_params__pack_to_buffer
                     (const CoreML__Specification__AsinhLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__asinh_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AsinhLayerParams *
       core_ml__specification__asinh_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AsinhLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__asinh_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__asinh_layer_params__free_unpacked
                     (CoreML__Specification__AsinhLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__asinh_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__acosh_layer_params__init
                     (CoreML__Specification__AcoshLayerParams         *message)
{
  static const CoreML__Specification__AcoshLayerParams init_value = CORE_ML__SPECIFICATION__ACOSH_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__acosh_layer_params__get_packed_size
                     (const CoreML__Specification__AcoshLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__acosh_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__acosh_layer_params__pack
                     (const CoreML__Specification__AcoshLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__acosh_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__acosh_layer_params__pack_to_buffer
                     (const CoreML__Specification__AcoshLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__acosh_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AcoshLayerParams *
       core_ml__specification__acosh_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AcoshLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__acosh_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__acosh_layer_params__free_unpacked
                     (CoreML__Specification__AcoshLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__acosh_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__atanh_layer_params__init
                     (CoreML__Specification__AtanhLayerParams         *message)
{
  static const CoreML__Specification__AtanhLayerParams init_value = CORE_ML__SPECIFICATION__ATANH_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__atanh_layer_params__get_packed_size
                     (const CoreML__Specification__AtanhLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__atanh_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__atanh_layer_params__pack
                     (const CoreML__Specification__AtanhLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__atanh_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__atanh_layer_params__pack_to_buffer
                     (const CoreML__Specification__AtanhLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__atanh_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AtanhLayerParams *
       core_ml__specification__atanh_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AtanhLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__atanh_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__atanh_layer_params__free_unpacked
                     (CoreML__Specification__AtanhLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__atanh_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__pow_broadcastable_layer_params__init
                     (CoreML__Specification__PowBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__PowBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__POW_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__pow_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__PowBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__pow_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__pow_broadcastable_layer_params__pack
                     (const CoreML__Specification__PowBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__pow_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__pow_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__PowBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__pow_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__PowBroadcastableLayerParams *
       core_ml__specification__pow_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__PowBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__pow_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__pow_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__PowBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__pow_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__exp2_layer_params__init
                     (CoreML__Specification__Exp2LayerParams         *message)
{
  static const CoreML__Specification__Exp2LayerParams init_value = CORE_ML__SPECIFICATION__EXP2_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__exp2_layer_params__get_packed_size
                     (const CoreML__Specification__Exp2LayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__exp2_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__exp2_layer_params__pack
                     (const CoreML__Specification__Exp2LayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__exp2_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__exp2_layer_params__pack_to_buffer
                     (const CoreML__Specification__Exp2LayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__exp2_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__Exp2LayerParams *
       core_ml__specification__exp2_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__Exp2LayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__exp2_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__exp2_layer_params__free_unpacked
                     (CoreML__Specification__Exp2LayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__exp2_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__where_non_zero_layer_params__init
                     (CoreML__Specification__WhereNonZeroLayerParams         *message)
{
  static const CoreML__Specification__WhereNonZeroLayerParams init_value = CORE_ML__SPECIFICATION__WHERE_NON_ZERO_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__where_non_zero_layer_params__get_packed_size
                     (const CoreML__Specification__WhereNonZeroLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__where_non_zero_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__where_non_zero_layer_params__pack
                     (const CoreML__Specification__WhereNonZeroLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__where_non_zero_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__where_non_zero_layer_params__pack_to_buffer
                     (const CoreML__Specification__WhereNonZeroLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__where_non_zero_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__WhereNonZeroLayerParams *
       core_ml__specification__where_non_zero_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__WhereNonZeroLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__where_non_zero_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__where_non_zero_layer_params__free_unpacked
                     (CoreML__Specification__WhereNonZeroLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__where_non_zero_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__matrix_band_part_layer_params__init
                     (CoreML__Specification__MatrixBandPartLayerParams         *message)
{
  static const CoreML__Specification__MatrixBandPartLayerParams init_value = CORE_ML__SPECIFICATION__MATRIX_BAND_PART_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__matrix_band_part_layer_params__get_packed_size
                     (const CoreML__Specification__MatrixBandPartLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__matrix_band_part_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__matrix_band_part_layer_params__pack
                     (const CoreML__Specification__MatrixBandPartLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__matrix_band_part_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__matrix_band_part_layer_params__pack_to_buffer
                     (const CoreML__Specification__MatrixBandPartLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__matrix_band_part_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MatrixBandPartLayerParams *
       core_ml__specification__matrix_band_part_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MatrixBandPartLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__matrix_band_part_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__matrix_band_part_layer_params__free_unpacked
                     (CoreML__Specification__MatrixBandPartLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__matrix_band_part_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__upper_triangular_layer_params__init
                     (CoreML__Specification__UpperTriangularLayerParams         *message)
{
  static const CoreML__Specification__UpperTriangularLayerParams init_value = CORE_ML__SPECIFICATION__UPPER_TRIANGULAR_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__upper_triangular_layer_params__get_packed_size
                     (const CoreML__Specification__UpperTriangularLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__upper_triangular_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__upper_triangular_layer_params__pack
                     (const CoreML__Specification__UpperTriangularLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__upper_triangular_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__upper_triangular_layer_params__pack_to_buffer
                     (const CoreML__Specification__UpperTriangularLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__upper_triangular_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__UpperTriangularLayerParams *
       core_ml__specification__upper_triangular_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__UpperTriangularLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__upper_triangular_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__upper_triangular_layer_params__free_unpacked
                     (CoreML__Specification__UpperTriangularLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__upper_triangular_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__lower_triangular_layer_params__init
                     (CoreML__Specification__LowerTriangularLayerParams         *message)
{
  static const CoreML__Specification__LowerTriangularLayerParams init_value = CORE_ML__SPECIFICATION__LOWER_TRIANGULAR_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__lower_triangular_layer_params__get_packed_size
                     (const CoreML__Specification__LowerTriangularLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__lower_triangular_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__lower_triangular_layer_params__pack
                     (const CoreML__Specification__LowerTriangularLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__lower_triangular_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__lower_triangular_layer_params__pack_to_buffer
                     (const CoreML__Specification__LowerTriangularLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__lower_triangular_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LowerTriangularLayerParams *
       core_ml__specification__lower_triangular_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LowerTriangularLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__lower_triangular_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__lower_triangular_layer_params__free_unpacked
                     (CoreML__Specification__LowerTriangularLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__lower_triangular_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__broadcast_to_like_layer_params__init
                     (CoreML__Specification__BroadcastToLikeLayerParams         *message)
{
  static const CoreML__Specification__BroadcastToLikeLayerParams init_value = CORE_ML__SPECIFICATION__BROADCAST_TO_LIKE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__broadcast_to_like_layer_params__get_packed_size
                     (const CoreML__Specification__BroadcastToLikeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_like_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__broadcast_to_like_layer_params__pack
                     (const CoreML__Specification__BroadcastToLikeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_like_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__broadcast_to_like_layer_params__pack_to_buffer
                     (const CoreML__Specification__BroadcastToLikeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_like_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BroadcastToLikeLayerParams *
       core_ml__specification__broadcast_to_like_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BroadcastToLikeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__broadcast_to_like_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__broadcast_to_like_layer_params__free_unpacked
                     (CoreML__Specification__BroadcastToLikeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_like_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__broadcast_to_static_layer_params__init
                     (CoreML__Specification__BroadcastToStaticLayerParams         *message)
{
  static const CoreML__Specification__BroadcastToStaticLayerParams init_value = CORE_ML__SPECIFICATION__BROADCAST_TO_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__broadcast_to_static_layer_params__get_packed_size
                     (const CoreML__Specification__BroadcastToStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__broadcast_to_static_layer_params__pack
                     (const CoreML__Specification__BroadcastToStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__broadcast_to_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__BroadcastToStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BroadcastToStaticLayerParams *
       core_ml__specification__broadcast_to_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BroadcastToStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__broadcast_to_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__broadcast_to_static_layer_params__free_unpacked
                     (CoreML__Specification__BroadcastToStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__broadcast_to_dynamic_layer_params__init
                     (CoreML__Specification__BroadcastToDynamicLayerParams         *message)
{
  static const CoreML__Specification__BroadcastToDynamicLayerParams init_value = CORE_ML__SPECIFICATION__BROADCAST_TO_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__broadcast_to_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__BroadcastToDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__broadcast_to_dynamic_layer_params__pack
                     (const CoreML__Specification__BroadcastToDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__broadcast_to_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__BroadcastToDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__BroadcastToDynamicLayerParams *
       core_ml__specification__broadcast_to_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__BroadcastToDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__broadcast_to_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__broadcast_to_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__BroadcastToDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__broadcast_to_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__add_broadcastable_layer_params__init
                     (CoreML__Specification__AddBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__AddBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__ADD_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__add_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__AddBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__add_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__add_broadcastable_layer_params__pack
                     (const CoreML__Specification__AddBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__add_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__add_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__AddBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__add_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AddBroadcastableLayerParams *
       core_ml__specification__add_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AddBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__add_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__add_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__AddBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__add_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__max_broadcastable_layer_params__init
                     (CoreML__Specification__MaxBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__MaxBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__MAX_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__max_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__MaxBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__max_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__max_broadcastable_layer_params__pack
                     (const CoreML__Specification__MaxBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__max_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__max_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__MaxBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__max_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MaxBroadcastableLayerParams *
       core_ml__specification__max_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MaxBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__max_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__max_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__MaxBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__max_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__min_broadcastable_layer_params__init
                     (CoreML__Specification__MinBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__MinBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__MIN_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__min_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__MinBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__min_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__min_broadcastable_layer_params__pack
                     (const CoreML__Specification__MinBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__min_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__min_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__MinBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__min_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MinBroadcastableLayerParams *
       core_ml__specification__min_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MinBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__min_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__min_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__MinBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__min_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__mod_broadcastable_layer_params__init
                     (CoreML__Specification__ModBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__ModBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__MOD_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__mod_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__ModBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__mod_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__mod_broadcastable_layer_params__pack
                     (const CoreML__Specification__ModBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__mod_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__mod_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__ModBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__mod_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ModBroadcastableLayerParams *
       core_ml__specification__mod_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ModBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__mod_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__mod_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__ModBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__mod_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__floor_div_broadcastable_layer_params__init
                     (CoreML__Specification__FloorDivBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__FloorDivBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__FLOOR_DIV_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__floor_div_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__FloorDivBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__floor_div_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__floor_div_broadcastable_layer_params__pack
                     (const CoreML__Specification__FloorDivBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__floor_div_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__floor_div_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__FloorDivBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__floor_div_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__FloorDivBroadcastableLayerParams *
       core_ml__specification__floor_div_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__FloorDivBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__floor_div_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__floor_div_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__FloorDivBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__floor_div_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__subtract_broadcastable_layer_params__init
                     (CoreML__Specification__SubtractBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__SubtractBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__SUBTRACT_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__subtract_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__SubtractBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__subtract_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__subtract_broadcastable_layer_params__pack
                     (const CoreML__Specification__SubtractBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__subtract_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__subtract_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__SubtractBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__subtract_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SubtractBroadcastableLayerParams *
       core_ml__specification__subtract_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SubtractBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__subtract_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__subtract_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__SubtractBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__subtract_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__multiply_broadcastable_layer_params__init
                     (CoreML__Specification__MultiplyBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__MultiplyBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__MULTIPLY_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__multiply_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__MultiplyBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__multiply_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__multiply_broadcastable_layer_params__pack
                     (const CoreML__Specification__MultiplyBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__multiply_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__multiply_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__MultiplyBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__multiply_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MultiplyBroadcastableLayerParams *
       core_ml__specification__multiply_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MultiplyBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__multiply_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__multiply_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__MultiplyBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__multiply_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__divide_broadcastable_layer_params__init
                     (CoreML__Specification__DivideBroadcastableLayerParams         *message)
{
  static const CoreML__Specification__DivideBroadcastableLayerParams init_value = CORE_ML__SPECIFICATION__DIVIDE_BROADCASTABLE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__divide_broadcastable_layer_params__get_packed_size
                     (const CoreML__Specification__DivideBroadcastableLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__divide_broadcastable_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__divide_broadcastable_layer_params__pack
                     (const CoreML__Specification__DivideBroadcastableLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__divide_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__divide_broadcastable_layer_params__pack_to_buffer
                     (const CoreML__Specification__DivideBroadcastableLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__divide_broadcastable_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__DivideBroadcastableLayerParams *
       core_ml__specification__divide_broadcastable_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__DivideBroadcastableLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__divide_broadcastable_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__divide_broadcastable_layer_params__free_unpacked
                     (CoreML__Specification__DivideBroadcastableLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__divide_broadcastable_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__gather_layer_params__init
                     (CoreML__Specification__GatherLayerParams         *message)
{
  static const CoreML__Specification__GatherLayerParams init_value = CORE_ML__SPECIFICATION__GATHER_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__gather_layer_params__get_packed_size
                     (const CoreML__Specification__GatherLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__gather_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__gather_layer_params__pack
                     (const CoreML__Specification__GatherLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__gather_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__gather_layer_params__pack_to_buffer
                     (const CoreML__Specification__GatherLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__gather_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GatherLayerParams *
       core_ml__specification__gather_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GatherLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__gather_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__gather_layer_params__free_unpacked
                     (CoreML__Specification__GatherLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__gather_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__scatter_layer_params__init
                     (CoreML__Specification__ScatterLayerParams         *message)
{
  static const CoreML__Specification__ScatterLayerParams init_value = CORE_ML__SPECIFICATION__SCATTER_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__scatter_layer_params__get_packed_size
                     (const CoreML__Specification__ScatterLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__scatter_layer_params__pack
                     (const CoreML__Specification__ScatterLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__scatter_layer_params__pack_to_buffer
                     (const CoreML__Specification__ScatterLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ScatterLayerParams *
       core_ml__specification__scatter_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ScatterLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__scatter_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__scatter_layer_params__free_unpacked
                     (CoreML__Specification__ScatterLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__scatter_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__gather_ndlayer_params__init
                     (CoreML__Specification__GatherNDLayerParams         *message)
{
  static const CoreML__Specification__GatherNDLayerParams init_value = CORE_ML__SPECIFICATION__GATHER_NDLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__gather_ndlayer_params__get_packed_size
                     (const CoreML__Specification__GatherNDLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__gather_ndlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__gather_ndlayer_params__pack
                     (const CoreML__Specification__GatherNDLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__gather_ndlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__gather_ndlayer_params__pack_to_buffer
                     (const CoreML__Specification__GatherNDLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__gather_ndlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GatherNDLayerParams *
       core_ml__specification__gather_ndlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GatherNDLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__gather_ndlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__gather_ndlayer_params__free_unpacked
                     (CoreML__Specification__GatherNDLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__gather_ndlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__scatter_ndlayer_params__init
                     (CoreML__Specification__ScatterNDLayerParams         *message)
{
  static const CoreML__Specification__ScatterNDLayerParams init_value = CORE_ML__SPECIFICATION__SCATTER_NDLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__scatter_ndlayer_params__get_packed_size
                     (const CoreML__Specification__ScatterNDLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_ndlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__scatter_ndlayer_params__pack
                     (const CoreML__Specification__ScatterNDLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_ndlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__scatter_ndlayer_params__pack_to_buffer
                     (const CoreML__Specification__ScatterNDLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_ndlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ScatterNDLayerParams *
       core_ml__specification__scatter_ndlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ScatterNDLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__scatter_ndlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__scatter_ndlayer_params__free_unpacked
                     (CoreML__Specification__ScatterNDLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__scatter_ndlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__gather_along_axis_layer_params__init
                     (CoreML__Specification__GatherAlongAxisLayerParams         *message)
{
  static const CoreML__Specification__GatherAlongAxisLayerParams init_value = CORE_ML__SPECIFICATION__GATHER_ALONG_AXIS_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__gather_along_axis_layer_params__get_packed_size
                     (const CoreML__Specification__GatherAlongAxisLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__gather_along_axis_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__gather_along_axis_layer_params__pack
                     (const CoreML__Specification__GatherAlongAxisLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__gather_along_axis_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__gather_along_axis_layer_params__pack_to_buffer
                     (const CoreML__Specification__GatherAlongAxisLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__gather_along_axis_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GatherAlongAxisLayerParams *
       core_ml__specification__gather_along_axis_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GatherAlongAxisLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__gather_along_axis_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__gather_along_axis_layer_params__free_unpacked
                     (CoreML__Specification__GatherAlongAxisLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__gather_along_axis_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__scatter_along_axis_layer_params__init
                     (CoreML__Specification__ScatterAlongAxisLayerParams         *message)
{
  static const CoreML__Specification__ScatterAlongAxisLayerParams init_value = CORE_ML__SPECIFICATION__SCATTER_ALONG_AXIS_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__scatter_along_axis_layer_params__get_packed_size
                     (const CoreML__Specification__ScatterAlongAxisLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_along_axis_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__scatter_along_axis_layer_params__pack
                     (const CoreML__Specification__ScatterAlongAxisLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_along_axis_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__scatter_along_axis_layer_params__pack_to_buffer
                     (const CoreML__Specification__ScatterAlongAxisLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__scatter_along_axis_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ScatterAlongAxisLayerParams *
       core_ml__specification__scatter_along_axis_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ScatterAlongAxisLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__scatter_along_axis_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__scatter_along_axis_layer_params__free_unpacked
                     (CoreML__Specification__ScatterAlongAxisLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__scatter_along_axis_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__stack_layer_params__init
                     (CoreML__Specification__StackLayerParams         *message)
{
  static const CoreML__Specification__StackLayerParams init_value = CORE_ML__SPECIFICATION__STACK_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__stack_layer_params__get_packed_size
                     (const CoreML__Specification__StackLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__stack_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__stack_layer_params__pack
                     (const CoreML__Specification__StackLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__stack_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__stack_layer_params__pack_to_buffer
                     (const CoreML__Specification__StackLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__stack_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__StackLayerParams *
       core_ml__specification__stack_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__StackLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__stack_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__stack_layer_params__free_unpacked
                     (CoreML__Specification__StackLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__stack_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__rank_preserving_reshape_layer_params__init
                     (CoreML__Specification__RankPreservingReshapeLayerParams         *message)
{
  static const CoreML__Specification__RankPreservingReshapeLayerParams init_value = CORE_ML__SPECIFICATION__RANK_PRESERVING_RESHAPE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__rank_preserving_reshape_layer_params__get_packed_size
                     (const CoreML__Specification__RankPreservingReshapeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__rank_preserving_reshape_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__rank_preserving_reshape_layer_params__pack
                     (const CoreML__Specification__RankPreservingReshapeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__rank_preserving_reshape_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__rank_preserving_reshape_layer_params__pack_to_buffer
                     (const CoreML__Specification__RankPreservingReshapeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__rank_preserving_reshape_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RankPreservingReshapeLayerParams *
       core_ml__specification__rank_preserving_reshape_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RankPreservingReshapeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__rank_preserving_reshape_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__rank_preserving_reshape_layer_params__free_unpacked
                     (CoreML__Specification__RankPreservingReshapeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__rank_preserving_reshape_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__constant_padding_layer_params__init
                     (CoreML__Specification__ConstantPaddingLayerParams         *message)
{
  static const CoreML__Specification__ConstantPaddingLayerParams init_value = CORE_ML__SPECIFICATION__CONSTANT_PADDING_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__constant_padding_layer_params__get_packed_size
                     (const CoreML__Specification__ConstantPaddingLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__constant_padding_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__constant_padding_layer_params__pack
                     (const CoreML__Specification__ConstantPaddingLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__constant_padding_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__constant_padding_layer_params__pack_to_buffer
                     (const CoreML__Specification__ConstantPaddingLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__constant_padding_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ConstantPaddingLayerParams *
       core_ml__specification__constant_padding_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ConstantPaddingLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__constant_padding_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__constant_padding_layer_params__free_unpacked
                     (CoreML__Specification__ConstantPaddingLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__constant_padding_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_normal_like_layer_params__init
                     (CoreML__Specification__RandomNormalLikeLayerParams         *message)
{
  static const CoreML__Specification__RandomNormalLikeLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_NORMAL_LIKE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_normal_like_layer_params__get_packed_size
                     (const CoreML__Specification__RandomNormalLikeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_like_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_normal_like_layer_params__pack
                     (const CoreML__Specification__RandomNormalLikeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_like_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_normal_like_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomNormalLikeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_like_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomNormalLikeLayerParams *
       core_ml__specification__random_normal_like_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomNormalLikeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_normal_like_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_normal_like_layer_params__free_unpacked
                     (CoreML__Specification__RandomNormalLikeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_normal_like_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_normal_static_layer_params__init
                     (CoreML__Specification__RandomNormalStaticLayerParams         *message)
{
  static const CoreML__Specification__RandomNormalStaticLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_NORMAL_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_normal_static_layer_params__get_packed_size
                     (const CoreML__Specification__RandomNormalStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_normal_static_layer_params__pack
                     (const CoreML__Specification__RandomNormalStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_normal_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomNormalStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomNormalStaticLayerParams *
       core_ml__specification__random_normal_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomNormalStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_normal_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_normal_static_layer_params__free_unpacked
                     (CoreML__Specification__RandomNormalStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_normal_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_normal_dynamic_layer_params__init
                     (CoreML__Specification__RandomNormalDynamicLayerParams         *message)
{
  static const CoreML__Specification__RandomNormalDynamicLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_NORMAL_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_normal_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__RandomNormalDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_normal_dynamic_layer_params__pack
                     (const CoreML__Specification__RandomNormalDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_normal_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomNormalDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_normal_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomNormalDynamicLayerParams *
       core_ml__specification__random_normal_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomNormalDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_normal_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_normal_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__RandomNormalDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_normal_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_uniform_like_layer_params__init
                     (CoreML__Specification__RandomUniformLikeLayerParams         *message)
{
  static const CoreML__Specification__RandomUniformLikeLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_UNIFORM_LIKE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_uniform_like_layer_params__get_packed_size
                     (const CoreML__Specification__RandomUniformLikeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_like_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_uniform_like_layer_params__pack
                     (const CoreML__Specification__RandomUniformLikeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_like_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_uniform_like_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomUniformLikeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_like_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomUniformLikeLayerParams *
       core_ml__specification__random_uniform_like_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomUniformLikeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_uniform_like_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_uniform_like_layer_params__free_unpacked
                     (CoreML__Specification__RandomUniformLikeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_uniform_like_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_uniform_static_layer_params__init
                     (CoreML__Specification__RandomUniformStaticLayerParams         *message)
{
  static const CoreML__Specification__RandomUniformStaticLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_UNIFORM_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_uniform_static_layer_params__get_packed_size
                     (const CoreML__Specification__RandomUniformStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_uniform_static_layer_params__pack
                     (const CoreML__Specification__RandomUniformStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_uniform_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomUniformStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomUniformStaticLayerParams *
       core_ml__specification__random_uniform_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomUniformStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_uniform_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_uniform_static_layer_params__free_unpacked
                     (CoreML__Specification__RandomUniformStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_uniform_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_uniform_dynamic_layer_params__init
                     (CoreML__Specification__RandomUniformDynamicLayerParams         *message)
{
  static const CoreML__Specification__RandomUniformDynamicLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_UNIFORM_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_uniform_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__RandomUniformDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_uniform_dynamic_layer_params__pack
                     (const CoreML__Specification__RandomUniformDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_uniform_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomUniformDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_uniform_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomUniformDynamicLayerParams *
       core_ml__specification__random_uniform_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomUniformDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_uniform_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_uniform_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__RandomUniformDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_uniform_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_bernoulli_like_layer_params__init
                     (CoreML__Specification__RandomBernoulliLikeLayerParams         *message)
{
  static const CoreML__Specification__RandomBernoulliLikeLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_BERNOULLI_LIKE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_bernoulli_like_layer_params__get_packed_size
                     (const CoreML__Specification__RandomBernoulliLikeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_like_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_bernoulli_like_layer_params__pack
                     (const CoreML__Specification__RandomBernoulliLikeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_like_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_bernoulli_like_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomBernoulliLikeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_like_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomBernoulliLikeLayerParams *
       core_ml__specification__random_bernoulli_like_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomBernoulliLikeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_bernoulli_like_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_bernoulli_like_layer_params__free_unpacked
                     (CoreML__Specification__RandomBernoulliLikeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_like_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_bernoulli_static_layer_params__init
                     (CoreML__Specification__RandomBernoulliStaticLayerParams         *message)
{
  static const CoreML__Specification__RandomBernoulliStaticLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_BERNOULLI_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_bernoulli_static_layer_params__get_packed_size
                     (const CoreML__Specification__RandomBernoulliStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_bernoulli_static_layer_params__pack
                     (const CoreML__Specification__RandomBernoulliStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_bernoulli_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomBernoulliStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomBernoulliStaticLayerParams *
       core_ml__specification__random_bernoulli_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomBernoulliStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_bernoulli_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_bernoulli_static_layer_params__free_unpacked
                     (CoreML__Specification__RandomBernoulliStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__random_bernoulli_dynamic_layer_params__init
                     (CoreML__Specification__RandomBernoulliDynamicLayerParams         *message)
{
  static const CoreML__Specification__RandomBernoulliDynamicLayerParams init_value = CORE_ML__SPECIFICATION__RANDOM_BERNOULLI_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__random_bernoulli_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__RandomBernoulliDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__random_bernoulli_dynamic_layer_params__pack
                     (const CoreML__Specification__RandomBernoulliDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__random_bernoulli_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__RandomBernoulliDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RandomBernoulliDynamicLayerParams *
       core_ml__specification__random_bernoulli_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RandomBernoulliDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__random_bernoulli_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__random_bernoulli_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__RandomBernoulliDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__random_bernoulli_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__categorical_distribution_layer_params__init
                     (CoreML__Specification__CategoricalDistributionLayerParams         *message)
{
  static const CoreML__Specification__CategoricalDistributionLayerParams init_value = CORE_ML__SPECIFICATION__CATEGORICAL_DISTRIBUTION_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__categorical_distribution_layer_params__get_packed_size
                     (const CoreML__Specification__CategoricalDistributionLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__categorical_distribution_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__categorical_distribution_layer_params__pack
                     (const CoreML__Specification__CategoricalDistributionLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__categorical_distribution_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__categorical_distribution_layer_params__pack_to_buffer
                     (const CoreML__Specification__CategoricalDistributionLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__categorical_distribution_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CategoricalDistributionLayerParams *
       core_ml__specification__categorical_distribution_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CategoricalDistributionLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__categorical_distribution_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__categorical_distribution_layer_params__free_unpacked
                     (CoreML__Specification__CategoricalDistributionLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__categorical_distribution_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_l1_layer_params__init
                     (CoreML__Specification__ReduceL1LayerParams         *message)
{
  static const CoreML__Specification__ReduceL1LayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_L1_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_l1_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceL1LayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_l1_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_l1_layer_params__pack
                     (const CoreML__Specification__ReduceL1LayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_l1_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_l1_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceL1LayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_l1_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceL1LayerParams *
       core_ml__specification__reduce_l1_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceL1LayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_l1_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_l1_layer_params__free_unpacked
                     (CoreML__Specification__ReduceL1LayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_l1_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_l2_layer_params__init
                     (CoreML__Specification__ReduceL2LayerParams         *message)
{
  static const CoreML__Specification__ReduceL2LayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_L2_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_l2_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceL2LayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_l2_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_l2_layer_params__pack
                     (const CoreML__Specification__ReduceL2LayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_l2_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_l2_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceL2LayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_l2_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceL2LayerParams *
       core_ml__specification__reduce_l2_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceL2LayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_l2_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_l2_layer_params__free_unpacked
                     (CoreML__Specification__ReduceL2LayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_l2_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_max_layer_params__init
                     (CoreML__Specification__ReduceMaxLayerParams         *message)
{
  static const CoreML__Specification__ReduceMaxLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_MAX_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_max_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceMaxLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_max_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_max_layer_params__pack
                     (const CoreML__Specification__ReduceMaxLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_max_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_max_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceMaxLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_max_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceMaxLayerParams *
       core_ml__specification__reduce_max_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceMaxLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_max_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_max_layer_params__free_unpacked
                     (CoreML__Specification__ReduceMaxLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_max_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_min_layer_params__init
                     (CoreML__Specification__ReduceMinLayerParams         *message)
{
  static const CoreML__Specification__ReduceMinLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_MIN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_min_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceMinLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_min_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_min_layer_params__pack
                     (const CoreML__Specification__ReduceMinLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_min_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_min_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceMinLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_min_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceMinLayerParams *
       core_ml__specification__reduce_min_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceMinLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_min_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_min_layer_params__free_unpacked
                     (CoreML__Specification__ReduceMinLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_min_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_sum_layer_params__init
                     (CoreML__Specification__ReduceSumLayerParams         *message)
{
  static const CoreML__Specification__ReduceSumLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_SUM_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_sum_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceSumLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_sum_layer_params__pack
                     (const CoreML__Specification__ReduceSumLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_sum_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceSumLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceSumLayerParams *
       core_ml__specification__reduce_sum_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceSumLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_sum_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_sum_layer_params__free_unpacked
                     (CoreML__Specification__ReduceSumLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_prod_layer_params__init
                     (CoreML__Specification__ReduceProdLayerParams         *message)
{
  static const CoreML__Specification__ReduceProdLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_PROD_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_prod_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceProdLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_prod_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_prod_layer_params__pack
                     (const CoreML__Specification__ReduceProdLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_prod_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_prod_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceProdLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_prod_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceProdLayerParams *
       core_ml__specification__reduce_prod_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceProdLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_prod_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_prod_layer_params__free_unpacked
                     (CoreML__Specification__ReduceProdLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_prod_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_mean_layer_params__init
                     (CoreML__Specification__ReduceMeanLayerParams         *message)
{
  static const CoreML__Specification__ReduceMeanLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_MEAN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_mean_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceMeanLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_mean_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_mean_layer_params__pack
                     (const CoreML__Specification__ReduceMeanLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_mean_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_mean_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceMeanLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_mean_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceMeanLayerParams *
       core_ml__specification__reduce_mean_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceMeanLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_mean_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_mean_layer_params__free_unpacked
                     (CoreML__Specification__ReduceMeanLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_mean_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_log_sum_layer_params__init
                     (CoreML__Specification__ReduceLogSumLayerParams         *message)
{
  static const CoreML__Specification__ReduceLogSumLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_LOG_SUM_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_log_sum_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceLogSumLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_log_sum_layer_params__pack
                     (const CoreML__Specification__ReduceLogSumLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_log_sum_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceLogSumLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceLogSumLayerParams *
       core_ml__specification__reduce_log_sum_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceLogSumLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_log_sum_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_log_sum_layer_params__free_unpacked
                     (CoreML__Specification__ReduceLogSumLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_sum_square_layer_params__init
                     (CoreML__Specification__ReduceSumSquareLayerParams         *message)
{
  static const CoreML__Specification__ReduceSumSquareLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_SUM_SQUARE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_sum_square_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceSumSquareLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_square_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_sum_square_layer_params__pack
                     (const CoreML__Specification__ReduceSumSquareLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_square_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_sum_square_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceSumSquareLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_square_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceSumSquareLayerParams *
       core_ml__specification__reduce_sum_square_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceSumSquareLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_sum_square_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_sum_square_layer_params__free_unpacked
                     (CoreML__Specification__ReduceSumSquareLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_sum_square_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reduce_log_sum_exp_layer_params__init
                     (CoreML__Specification__ReduceLogSumExpLayerParams         *message)
{
  static const CoreML__Specification__ReduceLogSumExpLayerParams init_value = CORE_ML__SPECIFICATION__REDUCE_LOG_SUM_EXP_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reduce_log_sum_exp_layer_params__get_packed_size
                     (const CoreML__Specification__ReduceLogSumExpLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_exp_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reduce_log_sum_exp_layer_params__pack
                     (const CoreML__Specification__ReduceLogSumExpLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_exp_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reduce_log_sum_exp_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReduceLogSumExpLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_exp_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReduceLogSumExpLayerParams *
       core_ml__specification__reduce_log_sum_exp_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReduceLogSumExpLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reduce_log_sum_exp_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reduce_log_sum_exp_layer_params__free_unpacked
                     (CoreML__Specification__ReduceLogSumExpLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reduce_log_sum_exp_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__expand_dims_layer_params__init
                     (CoreML__Specification__ExpandDimsLayerParams         *message)
{
  static const CoreML__Specification__ExpandDimsLayerParams init_value = CORE_ML__SPECIFICATION__EXPAND_DIMS_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__expand_dims_layer_params__get_packed_size
                     (const CoreML__Specification__ExpandDimsLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__expand_dims_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__expand_dims_layer_params__pack
                     (const CoreML__Specification__ExpandDimsLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__expand_dims_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__expand_dims_layer_params__pack_to_buffer
                     (const CoreML__Specification__ExpandDimsLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__expand_dims_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ExpandDimsLayerParams *
       core_ml__specification__expand_dims_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ExpandDimsLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__expand_dims_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__expand_dims_layer_params__free_unpacked
                     (CoreML__Specification__ExpandDimsLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__expand_dims_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__flatten_to2_dlayer_params__init
                     (CoreML__Specification__FlattenTo2DLayerParams         *message)
{
  static const CoreML__Specification__FlattenTo2DLayerParams init_value = CORE_ML__SPECIFICATION__FLATTEN_TO2_DLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__flatten_to2_dlayer_params__get_packed_size
                     (const CoreML__Specification__FlattenTo2DLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__flatten_to2_dlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__flatten_to2_dlayer_params__pack
                     (const CoreML__Specification__FlattenTo2DLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__flatten_to2_dlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__flatten_to2_dlayer_params__pack_to_buffer
                     (const CoreML__Specification__FlattenTo2DLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__flatten_to2_dlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__FlattenTo2DLayerParams *
       core_ml__specification__flatten_to2_dlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__FlattenTo2DLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__flatten_to2_dlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__flatten_to2_dlayer_params__free_unpacked
                     (CoreML__Specification__FlattenTo2DLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__flatten_to2_dlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reshape_static_layer_params__init
                     (CoreML__Specification__ReshapeStaticLayerParams         *message)
{
  static const CoreML__Specification__ReshapeStaticLayerParams init_value = CORE_ML__SPECIFICATION__RESHAPE_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reshape_static_layer_params__get_packed_size
                     (const CoreML__Specification__ReshapeStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reshape_static_layer_params__pack
                     (const CoreML__Specification__ReshapeStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reshape_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReshapeStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReshapeStaticLayerParams *
       core_ml__specification__reshape_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReshapeStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reshape_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reshape_static_layer_params__free_unpacked
                     (CoreML__Specification__ReshapeStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reshape_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reshape_like_layer_params__init
                     (CoreML__Specification__ReshapeLikeLayerParams         *message)
{
  static const CoreML__Specification__ReshapeLikeLayerParams init_value = CORE_ML__SPECIFICATION__RESHAPE_LIKE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reshape_like_layer_params__get_packed_size
                     (const CoreML__Specification__ReshapeLikeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_like_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reshape_like_layer_params__pack
                     (const CoreML__Specification__ReshapeLikeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_like_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reshape_like_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReshapeLikeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_like_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReshapeLikeLayerParams *
       core_ml__specification__reshape_like_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReshapeLikeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reshape_like_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reshape_like_layer_params__free_unpacked
                     (CoreML__Specification__ReshapeLikeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reshape_like_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__reshape_dynamic_layer_params__init
                     (CoreML__Specification__ReshapeDynamicLayerParams         *message)
{
  static const CoreML__Specification__ReshapeDynamicLayerParams init_value = CORE_ML__SPECIFICATION__RESHAPE_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__reshape_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__ReshapeDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__reshape_dynamic_layer_params__pack
                     (const CoreML__Specification__ReshapeDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__reshape_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__ReshapeDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__reshape_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ReshapeDynamicLayerParams *
       core_ml__specification__reshape_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ReshapeDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__reshape_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__reshape_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__ReshapeDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__reshape_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__squeeze_layer_params__init
                     (CoreML__Specification__SqueezeLayerParams         *message)
{
  static const CoreML__Specification__SqueezeLayerParams init_value = CORE_ML__SPECIFICATION__SQUEEZE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__squeeze_layer_params__get_packed_size
                     (const CoreML__Specification__SqueezeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__squeeze_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__squeeze_layer_params__pack
                     (const CoreML__Specification__SqueezeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__squeeze_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__squeeze_layer_params__pack_to_buffer
                     (const CoreML__Specification__SqueezeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__squeeze_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SqueezeLayerParams *
       core_ml__specification__squeeze_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SqueezeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__squeeze_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__squeeze_layer_params__free_unpacked
                     (CoreML__Specification__SqueezeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__squeeze_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__top_klayer_params__init
                     (CoreML__Specification__TopKLayerParams         *message)
{
  static const CoreML__Specification__TopKLayerParams init_value = CORE_ML__SPECIFICATION__TOP_KLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__top_klayer_params__get_packed_size
                     (const CoreML__Specification__TopKLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__top_klayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__top_klayer_params__pack
                     (const CoreML__Specification__TopKLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__top_klayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__top_klayer_params__pack_to_buffer
                     (const CoreML__Specification__TopKLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__top_klayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__TopKLayerParams *
       core_ml__specification__top_klayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__TopKLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__top_klayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__top_klayer_params__free_unpacked
                     (CoreML__Specification__TopKLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__top_klayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__arg_max_layer_params__init
                     (CoreML__Specification__ArgMaxLayerParams         *message)
{
  static const CoreML__Specification__ArgMaxLayerParams init_value = CORE_ML__SPECIFICATION__ARG_MAX_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__arg_max_layer_params__get_packed_size
                     (const CoreML__Specification__ArgMaxLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__arg_max_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__arg_max_layer_params__pack
                     (const CoreML__Specification__ArgMaxLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__arg_max_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__arg_max_layer_params__pack_to_buffer
                     (const CoreML__Specification__ArgMaxLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__arg_max_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ArgMaxLayerParams *
       core_ml__specification__arg_max_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ArgMaxLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__arg_max_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__arg_max_layer_params__free_unpacked
                     (CoreML__Specification__ArgMaxLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__arg_max_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__arg_min_layer_params__init
                     (CoreML__Specification__ArgMinLayerParams         *message)
{
  static const CoreML__Specification__ArgMinLayerParams init_value = CORE_ML__SPECIFICATION__ARG_MIN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__arg_min_layer_params__get_packed_size
                     (const CoreML__Specification__ArgMinLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__arg_min_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__arg_min_layer_params__pack
                     (const CoreML__Specification__ArgMinLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__arg_min_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__arg_min_layer_params__pack_to_buffer
                     (const CoreML__Specification__ArgMinLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__arg_min_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ArgMinLayerParams *
       core_ml__specification__arg_min_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ArgMinLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__arg_min_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__arg_min_layer_params__free_unpacked
                     (CoreML__Specification__ArgMinLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__arg_min_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__split_ndlayer_params__init
                     (CoreML__Specification__SplitNDLayerParams         *message)
{
  static const CoreML__Specification__SplitNDLayerParams init_value = CORE_ML__SPECIFICATION__SPLIT_NDLAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__split_ndlayer_params__get_packed_size
                     (const CoreML__Specification__SplitNDLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__split_ndlayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__split_ndlayer_params__pack
                     (const CoreML__Specification__SplitNDLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__split_ndlayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__split_ndlayer_params__pack_to_buffer
                     (const CoreML__Specification__SplitNDLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__split_ndlayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SplitNDLayerParams *
       core_ml__specification__split_ndlayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SplitNDLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__split_ndlayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__split_ndlayer_params__free_unpacked
                     (CoreML__Specification__SplitNDLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__split_ndlayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__ceil_layer_params__init
                     (CoreML__Specification__CeilLayerParams         *message)
{
  static const CoreML__Specification__CeilLayerParams init_value = CORE_ML__SPECIFICATION__CEIL_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__ceil_layer_params__get_packed_size
                     (const CoreML__Specification__CeilLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__ceil_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__ceil_layer_params__pack
                     (const CoreML__Specification__CeilLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__ceil_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__ceil_layer_params__pack_to_buffer
                     (const CoreML__Specification__CeilLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__ceil_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CeilLayerParams *
       core_ml__specification__ceil_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CeilLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__ceil_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__ceil_layer_params__free_unpacked
                     (CoreML__Specification__CeilLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__ceil_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__round_layer_params__init
                     (CoreML__Specification__RoundLayerParams         *message)
{
  static const CoreML__Specification__RoundLayerParams init_value = CORE_ML__SPECIFICATION__ROUND_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__round_layer_params__get_packed_size
                     (const CoreML__Specification__RoundLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__round_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__round_layer_params__pack
                     (const CoreML__Specification__RoundLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__round_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__round_layer_params__pack_to_buffer
                     (const CoreML__Specification__RoundLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__round_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RoundLayerParams *
       core_ml__specification__round_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RoundLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__round_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__round_layer_params__free_unpacked
                     (CoreML__Specification__RoundLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__round_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__floor_layer_params__init
                     (CoreML__Specification__FloorLayerParams         *message)
{
  static const CoreML__Specification__FloorLayerParams init_value = CORE_ML__SPECIFICATION__FLOOR_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__floor_layer_params__get_packed_size
                     (const CoreML__Specification__FloorLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__floor_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__floor_layer_params__pack
                     (const CoreML__Specification__FloorLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__floor_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__floor_layer_params__pack_to_buffer
                     (const CoreML__Specification__FloorLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__floor_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__FloorLayerParams *
       core_ml__specification__floor_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__FloorLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__floor_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__floor_layer_params__free_unpacked
                     (CoreML__Specification__FloorLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__floor_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__sign_layer_params__init
                     (CoreML__Specification__SignLayerParams         *message)
{
  static const CoreML__Specification__SignLayerParams init_value = CORE_ML__SPECIFICATION__SIGN_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__sign_layer_params__get_packed_size
                     (const CoreML__Specification__SignLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__sign_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__sign_layer_params__pack
                     (const CoreML__Specification__SignLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__sign_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__sign_layer_params__pack_to_buffer
                     (const CoreML__Specification__SignLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__sign_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SignLayerParams *
       core_ml__specification__sign_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SignLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__sign_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__sign_layer_params__free_unpacked
                     (CoreML__Specification__SignLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__sign_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__clip_layer_params__init
                     (CoreML__Specification__ClipLayerParams         *message)
{
  static const CoreML__Specification__ClipLayerParams init_value = CORE_ML__SPECIFICATION__CLIP_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__clip_layer_params__get_packed_size
                     (const CoreML__Specification__ClipLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__clip_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__clip_layer_params__pack
                     (const CoreML__Specification__ClipLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__clip_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__clip_layer_params__pack_to_buffer
                     (const CoreML__Specification__ClipLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__clip_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ClipLayerParams *
       core_ml__specification__clip_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ClipLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__clip_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__clip_layer_params__free_unpacked
                     (CoreML__Specification__ClipLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__clip_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__slice_static_layer_params__init
                     (CoreML__Specification__SliceStaticLayerParams         *message)
{
  static const CoreML__Specification__SliceStaticLayerParams init_value = CORE_ML__SPECIFICATION__SLICE_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__slice_static_layer_params__get_packed_size
                     (const CoreML__Specification__SliceStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__slice_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__slice_static_layer_params__pack
                     (const CoreML__Specification__SliceStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__slice_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__slice_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__SliceStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__slice_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SliceStaticLayerParams *
       core_ml__specification__slice_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SliceStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__slice_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__slice_static_layer_params__free_unpacked
                     (CoreML__Specification__SliceStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__slice_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__slice_dynamic_layer_params__init
                     (CoreML__Specification__SliceDynamicLayerParams         *message)
{
  static const CoreML__Specification__SliceDynamicLayerParams init_value = CORE_ML__SPECIFICATION__SLICE_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__slice_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__SliceDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__slice_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__slice_dynamic_layer_params__pack
                     (const CoreML__Specification__SliceDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__slice_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__slice_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__SliceDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__slice_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SliceDynamicLayerParams *
       core_ml__specification__slice_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SliceDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__slice_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__slice_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__SliceDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__slice_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__tile_layer_params__init
                     (CoreML__Specification__TileLayerParams         *message)
{
  static const CoreML__Specification__TileLayerParams init_value = CORE_ML__SPECIFICATION__TILE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__tile_layer_params__get_packed_size
                     (const CoreML__Specification__TileLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__tile_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__tile_layer_params__pack
                     (const CoreML__Specification__TileLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__tile_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__tile_layer_params__pack_to_buffer
                     (const CoreML__Specification__TileLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__tile_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__TileLayerParams *
       core_ml__specification__tile_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__TileLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__tile_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__tile_layer_params__free_unpacked
                     (CoreML__Specification__TileLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__tile_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__get_shape_layer_params__init
                     (CoreML__Specification__GetShapeLayerParams         *message)
{
  static const CoreML__Specification__GetShapeLayerParams init_value = CORE_ML__SPECIFICATION__GET_SHAPE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__get_shape_layer_params__get_packed_size
                     (const CoreML__Specification__GetShapeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__get_shape_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__get_shape_layer_params__pack
                     (const CoreML__Specification__GetShapeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__get_shape_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__get_shape_layer_params__pack_to_buffer
                     (const CoreML__Specification__GetShapeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__get_shape_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GetShapeLayerParams *
       core_ml__specification__get_shape_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GetShapeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__get_shape_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__get_shape_layer_params__free_unpacked
                     (CoreML__Specification__GetShapeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__get_shape_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__erf_layer_params__init
                     (CoreML__Specification__ErfLayerParams         *message)
{
  static const CoreML__Specification__ErfLayerParams init_value = CORE_ML__SPECIFICATION__ERF_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__erf_layer_params__get_packed_size
                     (const CoreML__Specification__ErfLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__erf_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__erf_layer_params__pack
                     (const CoreML__Specification__ErfLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__erf_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__erf_layer_params__pack_to_buffer
                     (const CoreML__Specification__ErfLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__erf_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ErfLayerParams *
       core_ml__specification__erf_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ErfLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__erf_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__erf_layer_params__free_unpacked
                     (CoreML__Specification__ErfLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__erf_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__gelu_layer_params__init
                     (CoreML__Specification__GeluLayerParams         *message)
{
  static const CoreML__Specification__GeluLayerParams init_value = CORE_ML__SPECIFICATION__GELU_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__gelu_layer_params__get_packed_size
                     (const CoreML__Specification__GeluLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__gelu_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__gelu_layer_params__pack
                     (const CoreML__Specification__GeluLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__gelu_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__gelu_layer_params__pack_to_buffer
                     (const CoreML__Specification__GeluLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__gelu_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__GeluLayerParams *
       core_ml__specification__gelu_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__GeluLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__gelu_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__gelu_layer_params__free_unpacked
                     (CoreML__Specification__GeluLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__gelu_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__range_static_layer_params__init
                     (CoreML__Specification__RangeStaticLayerParams         *message)
{
  static const CoreML__Specification__RangeStaticLayerParams init_value = CORE_ML__SPECIFICATION__RANGE_STATIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__range_static_layer_params__get_packed_size
                     (const CoreML__Specification__RangeStaticLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__range_static_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__range_static_layer_params__pack
                     (const CoreML__Specification__RangeStaticLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__range_static_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__range_static_layer_params__pack_to_buffer
                     (const CoreML__Specification__RangeStaticLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__range_static_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RangeStaticLayerParams *
       core_ml__specification__range_static_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RangeStaticLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__range_static_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__range_static_layer_params__free_unpacked
                     (CoreML__Specification__RangeStaticLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__range_static_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__range_dynamic_layer_params__init
                     (CoreML__Specification__RangeDynamicLayerParams         *message)
{
  static const CoreML__Specification__RangeDynamicLayerParams init_value = CORE_ML__SPECIFICATION__RANGE_DYNAMIC_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__range_dynamic_layer_params__get_packed_size
                     (const CoreML__Specification__RangeDynamicLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__range_dynamic_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__range_dynamic_layer_params__pack
                     (const CoreML__Specification__RangeDynamicLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__range_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__range_dynamic_layer_params__pack_to_buffer
                     (const CoreML__Specification__RangeDynamicLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__range_dynamic_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__RangeDynamicLayerParams *
       core_ml__specification__range_dynamic_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__RangeDynamicLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__range_dynamic_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__range_dynamic_layer_params__free_unpacked
                     (CoreML__Specification__RangeDynamicLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__range_dynamic_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__sliding_windows_layer_params__init
                     (CoreML__Specification__SlidingWindowsLayerParams         *message)
{
  static const CoreML__Specification__SlidingWindowsLayerParams init_value = CORE_ML__SPECIFICATION__SLIDING_WINDOWS_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__sliding_windows_layer_params__get_packed_size
                     (const CoreML__Specification__SlidingWindowsLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__sliding_windows_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__sliding_windows_layer_params__pack
                     (const CoreML__Specification__SlidingWindowsLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__sliding_windows_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__sliding_windows_layer_params__pack_to_buffer
                     (const CoreML__Specification__SlidingWindowsLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__sliding_windows_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SlidingWindowsLayerParams *
       core_ml__specification__sliding_windows_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SlidingWindowsLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__sliding_windows_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__sliding_windows_layer_params__free_unpacked
                     (CoreML__Specification__SlidingWindowsLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__sliding_windows_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__layer_normalization_layer_params__init
                     (CoreML__Specification__LayerNormalizationLayerParams         *message)
{
  static const CoreML__Specification__LayerNormalizationLayerParams init_value = CORE_ML__SPECIFICATION__LAYER_NORMALIZATION_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__layer_normalization_layer_params__get_packed_size
                     (const CoreML__Specification__LayerNormalizationLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__layer_normalization_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__layer_normalization_layer_params__pack
                     (const CoreML__Specification__LayerNormalizationLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__layer_normalization_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__layer_normalization_layer_params__pack_to_buffer
                     (const CoreML__Specification__LayerNormalizationLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__layer_normalization_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LayerNormalizationLayerParams *
       core_ml__specification__layer_normalization_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LayerNormalizationLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__layer_normalization_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__layer_normalization_layer_params__free_unpacked
                     (CoreML__Specification__LayerNormalizationLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__layer_normalization_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__non_maximum_suppression_layer_params__init
                     (CoreML__Specification__NonMaximumSuppressionLayerParams         *message)
{
  static const CoreML__Specification__NonMaximumSuppressionLayerParams init_value = CORE_ML__SPECIFICATION__NON_MAXIMUM_SUPPRESSION_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__non_maximum_suppression_layer_params__get_packed_size
                     (const CoreML__Specification__NonMaximumSuppressionLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__non_maximum_suppression_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__non_maximum_suppression_layer_params__pack
                     (const CoreML__Specification__NonMaximumSuppressionLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__non_maximum_suppression_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__non_maximum_suppression_layer_params__pack_to_buffer
                     (const CoreML__Specification__NonMaximumSuppressionLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__non_maximum_suppression_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NonMaximumSuppressionLayerParams *
       core_ml__specification__non_maximum_suppression_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NonMaximumSuppressionLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__non_maximum_suppression_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__non_maximum_suppression_layer_params__free_unpacked
                     (CoreML__Specification__NonMaximumSuppressionLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__non_maximum_suppression_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__clamped_re_lulayer_params__init
                     (CoreML__Specification__ClampedReLULayerParams         *message)
{
  static const CoreML__Specification__ClampedReLULayerParams init_value = CORE_ML__SPECIFICATION__CLAMPED_RE_LULAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__clamped_re_lulayer_params__get_packed_size
                     (const CoreML__Specification__ClampedReLULayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__clamped_re_lulayer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__clamped_re_lulayer_params__pack
                     (const CoreML__Specification__ClampedReLULayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__clamped_re_lulayer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__clamped_re_lulayer_params__pack_to_buffer
                     (const CoreML__Specification__ClampedReLULayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__clamped_re_lulayer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ClampedReLULayerParams *
       core_ml__specification__clamped_re_lulayer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ClampedReLULayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__clamped_re_lulayer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__clamped_re_lulayer_params__free_unpacked
                     (CoreML__Specification__ClampedReLULayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__clamped_re_lulayer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__arg_sort_layer_params__init
                     (CoreML__Specification__ArgSortLayerParams         *message)
{
  static const CoreML__Specification__ArgSortLayerParams init_value = CORE_ML__SPECIFICATION__ARG_SORT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__arg_sort_layer_params__get_packed_size
                     (const CoreML__Specification__ArgSortLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__arg_sort_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__arg_sort_layer_params__pack
                     (const CoreML__Specification__ArgSortLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__arg_sort_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__arg_sort_layer_params__pack_to_buffer
                     (const CoreML__Specification__ArgSortLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__arg_sort_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__ArgSortLayerParams *
       core_ml__specification__arg_sort_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__ArgSortLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__arg_sort_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__arg_sort_layer_params__free_unpacked
                     (CoreML__Specification__ArgSortLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__arg_sort_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__slice_by_size_layer_params__init
                     (CoreML__Specification__SliceBySizeLayerParams         *message)
{
  static const CoreML__Specification__SliceBySizeLayerParams init_value = CORE_ML__SPECIFICATION__SLICE_BY_SIZE_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__slice_by_size_layer_params__get_packed_size
                     (const CoreML__Specification__SliceBySizeLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__slice_by_size_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__slice_by_size_layer_params__pack
                     (const CoreML__Specification__SliceBySizeLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__slice_by_size_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__slice_by_size_layer_params__pack_to_buffer
                     (const CoreML__Specification__SliceBySizeLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__slice_by_size_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SliceBySizeLayerParams *
       core_ml__specification__slice_by_size_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SliceBySizeLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__slice_by_size_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__slice_by_size_layer_params__free_unpacked
                     (CoreML__Specification__SliceBySizeLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__slice_by_size_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__neural_network_classifier__init
                     (CoreML__Specification__NeuralNetworkClassifier         *message)
{
  static const CoreML__Specification__NeuralNetworkClassifier init_value = CORE_ML__SPECIFICATION__NEURAL_NETWORK_CLASSIFIER__INIT;
  *message = init_value;
}
size_t core_ml__specification__neural_network_classifier__get_packed_size
                     (const CoreML__Specification__NeuralNetworkClassifier *message)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_classifier__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__neural_network_classifier__pack
                     (const CoreML__Specification__NeuralNetworkClassifier *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_classifier__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__neural_network_classifier__pack_to_buffer
                     (const CoreML__Specification__NeuralNetworkClassifier *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_classifier__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NeuralNetworkClassifier *
       core_ml__specification__neural_network_classifier__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NeuralNetworkClassifier *)
     protobuf_c_message_unpack (&core_ml__specification__neural_network_classifier__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__neural_network_classifier__free_unpacked
                     (CoreML__Specification__NeuralNetworkClassifier *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__neural_network_classifier__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__one_hot_layer_params__init
                     (CoreML__Specification__OneHotLayerParams         *message)
{
  static const CoreML__Specification__OneHotLayerParams init_value = CORE_ML__SPECIFICATION__ONE_HOT_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__one_hot_layer_params__get_packed_size
                     (const CoreML__Specification__OneHotLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__one_hot_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__one_hot_layer_params__pack
                     (const CoreML__Specification__OneHotLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__one_hot_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__one_hot_layer_params__pack_to_buffer
                     (const CoreML__Specification__OneHotLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__one_hot_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__OneHotLayerParams *
       core_ml__specification__one_hot_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__OneHotLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__one_hot_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__one_hot_layer_params__free_unpacked
                     (CoreML__Specification__OneHotLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__one_hot_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__cum_sum_layer_params__init
                     (CoreML__Specification__CumSumLayerParams         *message)
{
  static const CoreML__Specification__CumSumLayerParams init_value = CORE_ML__SPECIFICATION__CUM_SUM_LAYER_PARAMS__INIT;
  *message = init_value;
}
size_t core_ml__specification__cum_sum_layer_params__get_packed_size
                     (const CoreML__Specification__CumSumLayerParams *message)
{
  assert(message->base.descriptor == &core_ml__specification__cum_sum_layer_params__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__cum_sum_layer_params__pack
                     (const CoreML__Specification__CumSumLayerParams *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__cum_sum_layer_params__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__cum_sum_layer_params__pack_to_buffer
                     (const CoreML__Specification__CumSumLayerParams *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__cum_sum_layer_params__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CumSumLayerParams *
       core_ml__specification__cum_sum_layer_params__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CumSumLayerParams *)
     protobuf_c_message_unpack (&core_ml__specification__cum_sum_layer_params__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__cum_sum_layer_params__free_unpacked
                     (CoreML__Specification__CumSumLayerParams *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__cum_sum_layer_params__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__neural_network_regressor__init
                     (CoreML__Specification__NeuralNetworkRegressor         *message)
{
  static const CoreML__Specification__NeuralNetworkRegressor init_value = CORE_ML__SPECIFICATION__NEURAL_NETWORK_REGRESSOR__INIT;
  *message = init_value;
}
size_t core_ml__specification__neural_network_regressor__get_packed_size
                     (const CoreML__Specification__NeuralNetworkRegressor *message)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_regressor__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__neural_network_regressor__pack
                     (const CoreML__Specification__NeuralNetworkRegressor *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_regressor__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__neural_network_regressor__pack_to_buffer
                     (const CoreML__Specification__NeuralNetworkRegressor *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__neural_network_regressor__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NeuralNetworkRegressor *
       core_ml__specification__neural_network_regressor__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NeuralNetworkRegressor *)
     protobuf_c_message_unpack (&core_ml__specification__neural_network_regressor__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__neural_network_regressor__free_unpacked
                     (CoreML__Specification__NeuralNetworkRegressor *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__neural_network_regressor__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__network_update_parameters__init
                     (CoreML__Specification__NetworkUpdateParameters         *message)
{
  static const CoreML__Specification__NetworkUpdateParameters init_value = CORE_ML__SPECIFICATION__NETWORK_UPDATE_PARAMETERS__INIT;
  *message = init_value;
}
size_t core_ml__specification__network_update_parameters__get_packed_size
                     (const CoreML__Specification__NetworkUpdateParameters *message)
{
  assert(message->base.descriptor == &core_ml__specification__network_update_parameters__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__network_update_parameters__pack
                     (const CoreML__Specification__NetworkUpdateParameters *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__network_update_parameters__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__network_update_parameters__pack_to_buffer
                     (const CoreML__Specification__NetworkUpdateParameters *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__network_update_parameters__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__NetworkUpdateParameters *
       core_ml__specification__network_update_parameters__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__NetworkUpdateParameters *)
     protobuf_c_message_unpack (&core_ml__specification__network_update_parameters__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__network_update_parameters__free_unpacked
                     (CoreML__Specification__NetworkUpdateParameters *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__network_update_parameters__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__loss_layer__init
                     (CoreML__Specification__LossLayer         *message)
{
  static const CoreML__Specification__LossLayer init_value = CORE_ML__SPECIFICATION__LOSS_LAYER__INIT;
  *message = init_value;
}
size_t core_ml__specification__loss_layer__get_packed_size
                     (const CoreML__Specification__LossLayer *message)
{
  assert(message->base.descriptor == &core_ml__specification__loss_layer__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__loss_layer__pack
                     (const CoreML__Specification__LossLayer *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__loss_layer__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__loss_layer__pack_to_buffer
                     (const CoreML__Specification__LossLayer *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__loss_layer__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__LossLayer *
       core_ml__specification__loss_layer__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__LossLayer *)
     protobuf_c_message_unpack (&core_ml__specification__loss_layer__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__loss_layer__free_unpacked
                     (CoreML__Specification__LossLayer *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__loss_layer__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__categorical_cross_entropy_loss_layer__init
                     (CoreML__Specification__CategoricalCrossEntropyLossLayer         *message)
{
  static const CoreML__Specification__CategoricalCrossEntropyLossLayer init_value = CORE_ML__SPECIFICATION__CATEGORICAL_CROSS_ENTROPY_LOSS_LAYER__INIT;
  *message = init_value;
}
size_t core_ml__specification__categorical_cross_entropy_loss_layer__get_packed_size
                     (const CoreML__Specification__CategoricalCrossEntropyLossLayer *message)
{
  assert(message->base.descriptor == &core_ml__specification__categorical_cross_entropy_loss_layer__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__categorical_cross_entropy_loss_layer__pack
                     (const CoreML__Specification__CategoricalCrossEntropyLossLayer *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__categorical_cross_entropy_loss_layer__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__categorical_cross_entropy_loss_layer__pack_to_buffer
                     (const CoreML__Specification__CategoricalCrossEntropyLossLayer *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__categorical_cross_entropy_loss_layer__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__CategoricalCrossEntropyLossLayer *
       core_ml__specification__categorical_cross_entropy_loss_layer__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__CategoricalCrossEntropyLossLayer *)
     protobuf_c_message_unpack (&core_ml__specification__categorical_cross_entropy_loss_layer__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__categorical_cross_entropy_loss_layer__free_unpacked
                     (CoreML__Specification__CategoricalCrossEntropyLossLayer *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__categorical_cross_entropy_loss_layer__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__mean_squared_error_loss_layer__init
                     (CoreML__Specification__MeanSquaredErrorLossLayer         *message)
{
  static const CoreML__Specification__MeanSquaredErrorLossLayer init_value = CORE_ML__SPECIFICATION__MEAN_SQUARED_ERROR_LOSS_LAYER__INIT;
  *message = init_value;
}
size_t core_ml__specification__mean_squared_error_loss_layer__get_packed_size
                     (const CoreML__Specification__MeanSquaredErrorLossLayer *message)
{
  assert(message->base.descriptor == &core_ml__specification__mean_squared_error_loss_layer__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__mean_squared_error_loss_layer__pack
                     (const CoreML__Specification__MeanSquaredErrorLossLayer *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__mean_squared_error_loss_layer__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__mean_squared_error_loss_layer__pack_to_buffer
                     (const CoreML__Specification__MeanSquaredErrorLossLayer *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__mean_squared_error_loss_layer__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__MeanSquaredErrorLossLayer *
       core_ml__specification__mean_squared_error_loss_layer__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__MeanSquaredErrorLossLayer *)
     protobuf_c_message_unpack (&core_ml__specification__mean_squared_error_loss_layer__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__mean_squared_error_loss_layer__free_unpacked
                     (CoreML__Specification__MeanSquaredErrorLossLayer *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__mean_squared_error_loss_layer__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__optimizer__init
                     (CoreML__Specification__Optimizer         *message)
{
  static const CoreML__Specification__Optimizer init_value = CORE_ML__SPECIFICATION__OPTIMIZER__INIT;
  *message = init_value;
}
size_t core_ml__specification__optimizer__get_packed_size
                     (const CoreML__Specification__Optimizer *message)
{
  assert(message->base.descriptor == &core_ml__specification__optimizer__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__optimizer__pack
                     (const CoreML__Specification__Optimizer *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__optimizer__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__optimizer__pack_to_buffer
                     (const CoreML__Specification__Optimizer *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__optimizer__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__Optimizer *
       core_ml__specification__optimizer__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__Optimizer *)
     protobuf_c_message_unpack (&core_ml__specification__optimizer__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__optimizer__free_unpacked
                     (CoreML__Specification__Optimizer *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__optimizer__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__sgdoptimizer__init
                     (CoreML__Specification__SGDOptimizer         *message)
{
  static const CoreML__Specification__SGDOptimizer init_value = CORE_ML__SPECIFICATION__SGDOPTIMIZER__INIT;
  *message = init_value;
}
size_t core_ml__specification__sgdoptimizer__get_packed_size
                     (const CoreML__Specification__SGDOptimizer *message)
{
  assert(message->base.descriptor == &core_ml__specification__sgdoptimizer__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__sgdoptimizer__pack
                     (const CoreML__Specification__SGDOptimizer *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__sgdoptimizer__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__sgdoptimizer__pack_to_buffer
                     (const CoreML__Specification__SGDOptimizer *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__sgdoptimizer__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__SGDOptimizer *
       core_ml__specification__sgdoptimizer__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__SGDOptimizer *)
     protobuf_c_message_unpack (&core_ml__specification__sgdoptimizer__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__sgdoptimizer__free_unpacked
                     (CoreML__Specification__SGDOptimizer *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__sgdoptimizer__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   core_ml__specification__adam_optimizer__init
                     (CoreML__Specification__AdamOptimizer         *message)
{
  static const CoreML__Specification__AdamOptimizer init_value = CORE_ML__SPECIFICATION__ADAM_OPTIMIZER__INIT;
  *message = init_value;
}
size_t core_ml__specification__adam_optimizer__get_packed_size
                     (const CoreML__Specification__AdamOptimizer *message)
{
  assert(message->base.descriptor == &core_ml__specification__adam_optimizer__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t core_ml__specification__adam_optimizer__pack
                     (const CoreML__Specification__AdamOptimizer *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &core_ml__specification__adam_optimizer__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t core_ml__specification__adam_optimizer__pack_to_buffer
                     (const CoreML__Specification__AdamOptimizer *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &core_ml__specification__adam_optimizer__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
CoreML__Specification__AdamOptimizer *
       core_ml__specification__adam_optimizer__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (CoreML__Specification__AdamOptimizer *)
     protobuf_c_message_unpack (&core_ml__specification__adam_optimizer__descriptor,
                                allocator, len, data);
}
void   core_ml__specification__adam_optimizer__free_unpacked
                     (CoreML__Specification__AdamOptimizer *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &core_ml__specification__adam_optimizer__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
static const ProtobufCFieldDescriptor core_ml__specification__neural_network__field_descriptors[5] =
{
  {
    "layers",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetwork, n_layers),
    offsetof(CoreML__Specification__NeuralNetwork, layers),
    &core_ml__specification__neural_network_layer__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "preprocessing",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetwork, n_preprocessing),
    offsetof(CoreML__Specification__NeuralNetwork, preprocessing),
    &core_ml__specification__neural_network_preprocessing__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "arrayInputShapeMapping",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetwork, arrayinputshapemapping),
    &core_ml__specification__neural_network_multi_array_shape_mapping__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "imageInputShapeMapping",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetwork, imageinputshapemapping),
    &core_ml__specification__neural_network_image_shape_mapping__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "updateParams",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetwork, updateparams),
    &core_ml__specification__network_update_parameters__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__neural_network__field_indices_by_name[] = {
  2,   /* field[2] = arrayInputShapeMapping */
  3,   /* field[3] = imageInputShapeMapping */
  0,   /* field[0] = layers */
  1,   /* field[1] = preprocessing */
  4,   /* field[4] = updateParams */
};
static const ProtobufCIntRange core_ml__specification__neural_network__number_ranges[3 + 1] =
{
  { 1, 0 },
  { 5, 2 },
  { 10, 4 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__neural_network__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetwork",
  "NeuralNetwork",
  "CoreML__Specification__NeuralNetwork",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NeuralNetwork),
  5,
  core_ml__specification__neural_network__field_descriptors,
  core_ml__specification__neural_network__field_indices_by_name,
  3,  core_ml__specification__neural_network__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__neural_network__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__neural_network_image_scaler__field_descriptors[5] =
{
  {
    "channelScale",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkImageScaler, channelscale),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "blueBias",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkImageScaler, bluebias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "greenBias",
    21,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkImageScaler, greenbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "redBias",
    22,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkImageScaler, redbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "grayBias",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkImageScaler, graybias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__neural_network_image_scaler__field_indices_by_name[] = {
  1,   /* field[1] = blueBias */
  0,   /* field[0] = channelScale */
  4,   /* field[4] = grayBias */
  2,   /* field[2] = greenBias */
  3,   /* field[3] = redBias */
};
static const ProtobufCIntRange core_ml__specification__neural_network_image_scaler__number_ranges[3 + 1] =
{
  { 10, 0 },
  { 20, 1 },
  { 30, 4 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__neural_network_image_scaler__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkImageScaler",
  "NeuralNetworkImageScaler",
  "CoreML__Specification__NeuralNetworkImageScaler",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NeuralNetworkImageScaler),
  5,
  core_ml__specification__neural_network_image_scaler__field_descriptors,
  core_ml__specification__neural_network_image_scaler__field_indices_by_name,
  3,  core_ml__specification__neural_network_image_scaler__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__neural_network_image_scaler__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__neural_network_mean_image__field_descriptors[1] =
{
  {
    "meanImage",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_FLOAT,
    offsetof(CoreML__Specification__NeuralNetworkMeanImage, n_meanimage),
    offsetof(CoreML__Specification__NeuralNetworkMeanImage, meanimage),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__neural_network_mean_image__field_indices_by_name[] = {
  0,   /* field[0] = meanImage */
};
static const ProtobufCIntRange core_ml__specification__neural_network_mean_image__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__neural_network_mean_image__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkMeanImage",
  "NeuralNetworkMeanImage",
  "CoreML__Specification__NeuralNetworkMeanImage",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NeuralNetworkMeanImage),
  1,
  core_ml__specification__neural_network_mean_image__field_descriptors,
  core_ml__specification__neural_network_mean_image__field_indices_by_name,
  1,  core_ml__specification__neural_network_mean_image__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__neural_network_mean_image__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__neural_network_preprocessing__field_descriptors[3] =
{
  {
    "featureName",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkPreprocessing, featurename),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scaler",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkPreprocessing, preprocessor_case),
    offsetof(CoreML__Specification__NeuralNetworkPreprocessing, scaler),
    &core_ml__specification__neural_network_image_scaler__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "meanImage",
    11,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkPreprocessing, preprocessor_case),
    offsetof(CoreML__Specification__NeuralNetworkPreprocessing, meanimage),
    &core_ml__specification__neural_network_mean_image__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__neural_network_preprocessing__field_indices_by_name[] = {
  0,   /* field[0] = featureName */
  2,   /* field[2] = meanImage */
  1,   /* field[1] = scaler */
};
static const ProtobufCIntRange core_ml__specification__neural_network_preprocessing__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 10, 1 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__neural_network_preprocessing__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkPreprocessing",
  "NeuralNetworkPreprocessing",
  "CoreML__Specification__NeuralNetworkPreprocessing",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NeuralNetworkPreprocessing),
  3,
  core_ml__specification__neural_network_preprocessing__field_descriptors,
  core_ml__specification__neural_network_preprocessing__field_indices_by_name,
  2,  core_ml__specification__neural_network_preprocessing__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__neural_network_preprocessing__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__activation_re_lu__field_descriptors NULL
#define core_ml__specification__activation_re_lu__field_indices_by_name NULL
#define core_ml__specification__activation_re_lu__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__activation_re_lu__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationReLU",
  "ActivationReLU",
  "CoreML__Specification__ActivationReLU",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationReLU),
  0,
  core_ml__specification__activation_re_lu__field_descriptors,
  core_ml__specification__activation_re_lu__field_indices_by_name,
  0,  core_ml__specification__activation_re_lu__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_re_lu__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_leaky_re_lu__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationLeakyReLU, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_leaky_re_lu__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__activation_leaky_re_lu__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_leaky_re_lu__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationLeakyReLU",
  "ActivationLeakyReLU",
  "CoreML__Specification__ActivationLeakyReLU",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationLeakyReLU),
  1,
  core_ml__specification__activation_leaky_re_lu__field_descriptors,
  core_ml__specification__activation_leaky_re_lu__field_indices_by_name,
  1,  core_ml__specification__activation_leaky_re_lu__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_leaky_re_lu__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__activation_tanh__field_descriptors NULL
#define core_ml__specification__activation_tanh__field_indices_by_name NULL
#define core_ml__specification__activation_tanh__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__activation_tanh__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationTanh",
  "ActivationTanh",
  "CoreML__Specification__ActivationTanh",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationTanh),
  0,
  core_ml__specification__activation_tanh__field_descriptors,
  core_ml__specification__activation_tanh__field_indices_by_name,
  0,  core_ml__specification__activation_tanh__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_tanh__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_scaled_tanh__field_descriptors[2] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationScaledTanh, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationScaledTanh, beta),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_scaled_tanh__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
  1,   /* field[1] = beta */
};
static const ProtobufCIntRange core_ml__specification__activation_scaled_tanh__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_scaled_tanh__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationScaledTanh",
  "ActivationScaledTanh",
  "CoreML__Specification__ActivationScaledTanh",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationScaledTanh),
  2,
  core_ml__specification__activation_scaled_tanh__field_descriptors,
  core_ml__specification__activation_scaled_tanh__field_indices_by_name,
  1,  core_ml__specification__activation_scaled_tanh__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_scaled_tanh__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__activation_sigmoid__field_descriptors NULL
#define core_ml__specification__activation_sigmoid__field_indices_by_name NULL
#define core_ml__specification__activation_sigmoid__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__activation_sigmoid__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationSigmoid",
  "ActivationSigmoid",
  "CoreML__Specification__ActivationSigmoid",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationSigmoid),
  0,
  core_ml__specification__activation_sigmoid__field_descriptors,
  core_ml__specification__activation_sigmoid__field_indices_by_name,
  0,  core_ml__specification__activation_sigmoid__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_sigmoid__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_linear__field_descriptors[2] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationLinear, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationLinear, beta),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_linear__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
  1,   /* field[1] = beta */
};
static const ProtobufCIntRange core_ml__specification__activation_linear__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_linear__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationLinear",
  "ActivationLinear",
  "CoreML__Specification__ActivationLinear",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationLinear),
  2,
  core_ml__specification__activation_linear__field_descriptors,
  core_ml__specification__activation_linear__field_indices_by_name,
  1,  core_ml__specification__activation_linear__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_linear__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_sigmoid_hard__field_descriptors[2] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationSigmoidHard, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationSigmoidHard, beta),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_sigmoid_hard__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
  1,   /* field[1] = beta */
};
static const ProtobufCIntRange core_ml__specification__activation_sigmoid_hard__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_sigmoid_hard__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationSigmoidHard",
  "ActivationSigmoidHard",
  "CoreML__Specification__ActivationSigmoidHard",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationSigmoidHard),
  2,
  core_ml__specification__activation_sigmoid_hard__field_descriptors,
  core_ml__specification__activation_sigmoid_hard__field_indices_by_name,
  1,  core_ml__specification__activation_sigmoid_hard__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_sigmoid_hard__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_pre_lu__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationPReLU, alpha),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_pre_lu__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__activation_pre_lu__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_pre_lu__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationPReLU",
  "ActivationPReLU",
  "CoreML__Specification__ActivationPReLU",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationPReLU),
  1,
  core_ml__specification__activation_pre_lu__field_descriptors,
  core_ml__specification__activation_pre_lu__field_indices_by_name,
  1,  core_ml__specification__activation_pre_lu__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_pre_lu__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_elu__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationELU, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_elu__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__activation_elu__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_elu__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationELU",
  "ActivationELU",
  "CoreML__Specification__ActivationELU",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationELU),
  1,
  core_ml__specification__activation_elu__field_descriptors,
  core_ml__specification__activation_elu__field_indices_by_name,
  1,  core_ml__specification__activation_elu__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_elu__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_thresholded_re_lu__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationThresholdedReLU, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_thresholded_re_lu__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__activation_thresholded_re_lu__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_thresholded_re_lu__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationThresholdedReLU",
  "ActivationThresholdedReLU",
  "CoreML__Specification__ActivationThresholdedReLU",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationThresholdedReLU),
  1,
  core_ml__specification__activation_thresholded_re_lu__field_descriptors,
  core_ml__specification__activation_thresholded_re_lu__field_indices_by_name,
  1,  core_ml__specification__activation_thresholded_re_lu__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_thresholded_re_lu__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__activation_softsign__field_descriptors NULL
#define core_ml__specification__activation_softsign__field_indices_by_name NULL
#define core_ml__specification__activation_softsign__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__activation_softsign__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationSoftsign",
  "ActivationSoftsign",
  "CoreML__Specification__ActivationSoftsign",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationSoftsign),
  0,
  core_ml__specification__activation_softsign__field_descriptors,
  core_ml__specification__activation_softsign__field_indices_by_name,
  0,  core_ml__specification__activation_softsign__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_softsign__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__activation_softplus__field_descriptors NULL
#define core_ml__specification__activation_softplus__field_indices_by_name NULL
#define core_ml__specification__activation_softplus__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__activation_softplus__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationSoftplus",
  "ActivationSoftplus",
  "CoreML__Specification__ActivationSoftplus",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationSoftplus),
  0,
  core_ml__specification__activation_softplus__field_descriptors,
  core_ml__specification__activation_softplus__field_indices_by_name,
  0,  core_ml__specification__activation_softplus__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_softplus__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_parametric_softplus__field_descriptors[2] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationParametricSoftplus, alpha),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ActivationParametricSoftplus, beta),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_parametric_softplus__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
  1,   /* field[1] = beta */
};
static const ProtobufCIntRange core_ml__specification__activation_parametric_softplus__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_parametric_softplus__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationParametricSoftplus",
  "ActivationParametricSoftplus",
  "CoreML__Specification__ActivationParametricSoftplus",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationParametricSoftplus),
  2,
  core_ml__specification__activation_parametric_softplus__field_descriptors,
  core_ml__specification__activation_parametric_softplus__field_indices_by_name,
  1,  core_ml__specification__activation_parametric_softplus__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_parametric_softplus__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__activation_params__field_descriptors[13] =
{
  {
    "linear",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, linear),
    &core_ml__specification__activation_linear__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "ReLU",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, relu),
    &core_ml__specification__activation_re_lu__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "leakyReLU",
    15,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, leakyrelu),
    &core_ml__specification__activation_leaky_re_lu__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "thresholdedReLU",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, thresholdedrelu),
    &core_ml__specification__activation_thresholded_re_lu__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "PReLU",
    25,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, prelu),
    &core_ml__specification__activation_pre_lu__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "tanh",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, tanh),
    &core_ml__specification__activation_tanh__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scaledTanh",
    31,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, scaledtanh),
    &core_ml__specification__activation_scaled_tanh__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sigmoid",
    40,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, sigmoid),
    &core_ml__specification__activation_sigmoid__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sigmoidHard",
    41,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, sigmoidhard),
    &core_ml__specification__activation_sigmoid_hard__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "ELU",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, elu),
    &core_ml__specification__activation_elu__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "softsign",
    60,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, softsign),
    &core_ml__specification__activation_softsign__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "softplus",
    70,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, softplus),
    &core_ml__specification__activation_softplus__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "parametricSoftplus",
    71,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ActivationParams, nonlinearity_type_case),
    offsetof(CoreML__Specification__ActivationParams, parametricsoftplus),
    &core_ml__specification__activation_parametric_softplus__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__activation_params__field_indices_by_name[] = {
  9,   /* field[9] = ELU */
  4,   /* field[4] = PReLU */
  1,   /* field[1] = ReLU */
  2,   /* field[2] = leakyReLU */
  0,   /* field[0] = linear */
  12,   /* field[12] = parametricSoftplus */
  6,   /* field[6] = scaledTanh */
  7,   /* field[7] = sigmoid */
  8,   /* field[8] = sigmoidHard */
  11,   /* field[11] = softplus */
  10,   /* field[10] = softsign */
  5,   /* field[5] = tanh */
  3,   /* field[3] = thresholdedReLU */
};
static const ProtobufCIntRange core_ml__specification__activation_params__number_ranges[10 + 1] =
{
  { 5, 0 },
  { 10, 1 },
  { 15, 2 },
  { 20, 3 },
  { 25, 4 },
  { 30, 5 },
  { 40, 7 },
  { 50, 9 },
  { 60, 10 },
  { 70, 11 },
  { 0, 13 }
};
const ProtobufCMessageDescriptor core_ml__specification__activation_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ActivationParams",
  "ActivationParams",
  "CoreML__Specification__ActivationParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ActivationParams),
  13,
  core_ml__specification__activation_params__field_descriptors,
  core_ml__specification__activation_params__field_indices_by_name,
  10,  core_ml__specification__activation_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__activation_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__tensor__field_descriptors[2] =
{
  {
    "rank",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Tensor, rank),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dimValue",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__Tensor, n_dimvalue),
    offsetof(CoreML__Specification__Tensor, dimvalue),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__tensor__field_indices_by_name[] = {
  1,   /* field[1] = dimValue */
  0,   /* field[0] = rank */
};
static const ProtobufCIntRange core_ml__specification__tensor__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__tensor__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Tensor",
  "Tensor",
  "CoreML__Specification__Tensor",
  "CoreML.Specification",
  sizeof(CoreML__Specification__Tensor),
  2,
  core_ml__specification__tensor__field_descriptors,
  core_ml__specification__tensor__field_indices_by_name,
  1,  core_ml__specification__tensor__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__tensor__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__neural_network_layer__field_descriptors[164] =
{
  {
    "name",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkLayer, name),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "input",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_STRING,
    offsetof(CoreML__Specification__NeuralNetworkLayer, n_input),
    offsetof(CoreML__Specification__NeuralNetworkLayer, input),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "output",
    3,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_STRING,
    offsetof(CoreML__Specification__NeuralNetworkLayer, n_output),
    offsetof(CoreML__Specification__NeuralNetworkLayer, output),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "inputTensor",
    4,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, n_inputtensor),
    offsetof(CoreML__Specification__NeuralNetworkLayer, inputtensor),
    &core_ml__specification__tensor__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputTensor",
    5,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, n_outputtensor),
    offsetof(CoreML__Specification__NeuralNetworkLayer, outputtensor),
    &core_ml__specification__tensor__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "isUpdatable",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkLayer, isupdatable),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "convolution",
    100,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, convolution),
    &core_ml__specification__convolution_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "pooling",
    120,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, pooling),
    &core_ml__specification__pooling_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "activation",
    130,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, activation),
    &core_ml__specification__activation_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "innerProduct",
    140,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, innerproduct),
    &core_ml__specification__inner_product_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "embedding",
    150,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, embedding),
    &core_ml__specification__embedding_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "batchnorm",
    160,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, batchnorm),
    &core_ml__specification__batchnorm_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mvn",
    165,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, mvn),
    &core_ml__specification__mean_variance_normalize_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "l2normalize",
    170,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, l2normalize),
    &core_ml__specification__l2_normalize_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "softmax",
    175,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, softmax),
    &core_ml__specification__softmax_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "lrn",
    180,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, lrn),
    &core_ml__specification__lrnlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "crop",
    190,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, crop),
    &core_ml__specification__crop_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "padding",
    200,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, padding),
    &core_ml__specification__padding_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "upsample",
    210,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, upsample),
    &core_ml__specification__upsample_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "resizeBilinear",
    211,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, resizebilinear),
    &core_ml__specification__resize_bilinear_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "cropResize",
    212,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, cropresize),
    &core_ml__specification__crop_resize_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "unary",
    220,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, unary),
    &core_ml__specification__unary_function_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "add",
    230,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, add),
    &core_ml__specification__add_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "multiply",
    231,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, multiply),
    &core_ml__specification__multiply_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "average",
    240,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, average),
    &core_ml__specification__average_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scale",
    245,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, scale),
    &core_ml__specification__scale_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    250,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, bias),
    &core_ml__specification__bias_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "max",
    260,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, max),
    &core_ml__specification__max_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "min",
    261,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, min),
    &core_ml__specification__min_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dot",
    270,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, dot),
    &core_ml__specification__dot_product_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduce",
    280,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reduce),
    &core_ml__specification__reduce_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "loadConstant",
    290,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, loadconstant),
    &core_ml__specification__load_constant_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reshape",
    300,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reshape),
    &core_ml__specification__reshape_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "flatten",
    301,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, flatten),
    &core_ml__specification__flatten_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "permute",
    310,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, permute),
    &core_ml__specification__permute_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "concat",
    320,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, concat),
    &core_ml__specification__concat_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "split",
    330,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, split),
    &core_ml__specification__split_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sequenceRepeat",
    340,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, sequencerepeat),
    &core_ml__specification__sequence_repeat_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reorganizeData",
    345,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reorganizedata),
    &core_ml__specification__reorganize_data_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "slice",
    350,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, slice),
    &core_ml__specification__slice_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "simpleRecurrent",
    400,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, simplerecurrent),
    &core_ml__specification__simple_recurrent_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "gru",
    410,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, gru),
    &core_ml__specification__grulayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "uniDirectionalLSTM",
    420,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, unidirectionallstm),
    &core_ml__specification__uni_directional_lstmlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "biDirectionalLSTM",
    430,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, bidirectionallstm),
    &core_ml__specification__bi_directional_lstmlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "custom",
    500,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, custom),
    &core_ml__specification__custom_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "copy",
    600,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, copy),
    &core_ml__specification__copy_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "branch",
    605,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, branch),
    &core_ml__specification__branch_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "loop",
    615,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, loop),
    &core_ml__specification__loop_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "loopBreak",
    620,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, loopbreak),
    &core_ml__specification__loop_break_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "loopContinue",
    625,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, loopcontinue),
    &core_ml__specification__loop_continue_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "rangeStatic",
    635,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, rangestatic),
    &core_ml__specification__range_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "rangeDynamic",
    640,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, rangedynamic),
    &core_ml__specification__range_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "clip",
    660,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, clip),
    &core_ml__specification__clip_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "ceil",
    665,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, ceil),
    &core_ml__specification__ceil_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "floor",
    670,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, floor),
    &core_ml__specification__floor_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sign",
    680,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, sign),
    &core_ml__specification__sign_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "round",
    685,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, round),
    &core_ml__specification__round_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "exp2",
    700,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, exp2),
    &core_ml__specification__exp2_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sin",
    710,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, sin),
    &core_ml__specification__sin_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "cos",
    715,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, cos),
    &core_ml__specification__cos_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "tan",
    720,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, tan),
    &core_ml__specification__tan_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "asin",
    730,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, asin),
    &core_ml__specification__asin_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "acos",
    735,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, acos),
    &core_ml__specification__acos_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "atan",
    740,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, atan),
    &core_ml__specification__atan_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sinh",
    750,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, sinh),
    &core_ml__specification__sinh_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "cosh",
    755,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, cosh),
    &core_ml__specification__cosh_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "tanh",
    760,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, tanh),
    &core_ml__specification__tanh_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "asinh",
    770,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, asinh),
    &core_ml__specification__asinh_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "acosh",
    775,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, acosh),
    &core_ml__specification__acosh_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "atanh",
    780,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, atanh),
    &core_ml__specification__atanh_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "erf",
    790,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, erf),
    &core_ml__specification__erf_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "gelu",
    795,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, gelu),
    &core_ml__specification__gelu_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "equal",
    815,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, equal),
    &core_ml__specification__equal_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "notEqual",
    820,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, notequal),
    &core_ml__specification__not_equal_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "lessThan",
    825,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, lessthan),
    &core_ml__specification__less_than_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "lessEqual",
    827,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, lessequal),
    &core_ml__specification__less_equal_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "greaterThan",
    830,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, greaterthan),
    &core_ml__specification__greater_than_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "greaterEqual",
    832,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, greaterequal),
    &core_ml__specification__greater_equal_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "logicalOr",
    840,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, logicalor),
    &core_ml__specification__logical_or_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "logicalXor",
    845,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, logicalxor),
    &core_ml__specification__logical_xor_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "logicalNot",
    850,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, logicalnot),
    &core_ml__specification__logical_not_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "logicalAnd",
    855,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, logicaland),
    &core_ml__specification__logical_and_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "modBroadcastable",
    865,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, modbroadcastable),
    &core_ml__specification__mod_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "minBroadcastable",
    870,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, minbroadcastable),
    &core_ml__specification__min_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "maxBroadcastable",
    875,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, maxbroadcastable),
    &core_ml__specification__max_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "addBroadcastable",
    880,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, addbroadcastable),
    &core_ml__specification__add_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "powBroadcastable",
    885,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, powbroadcastable),
    &core_ml__specification__pow_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "divideBroadcastable",
    890,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, dividebroadcastable),
    &core_ml__specification__divide_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "floorDivBroadcastable",
    895,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, floordivbroadcastable),
    &core_ml__specification__floor_div_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "multiplyBroadcastable",
    900,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, multiplybroadcastable),
    &core_ml__specification__multiply_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "subtractBroadcastable",
    905,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, subtractbroadcastable),
    &core_ml__specification__subtract_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "tile",
    920,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, tile),
    &core_ml__specification__tile_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stack",
    925,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, stack),
    &core_ml__specification__stack_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "gather",
    930,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, gather),
    &core_ml__specification__gather_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scatter",
    935,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, scatter),
    &core_ml__specification__scatter_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "gatherND",
    940,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, gathernd),
    &core_ml__specification__gather_ndlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scatterND",
    945,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, scatternd),
    &core_ml__specification__scatter_ndlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "softmaxND",
    950,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, softmaxnd),
    &core_ml__specification__softmax_ndlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "gatherAlongAxis",
    952,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, gatheralongaxis),
    &core_ml__specification__gather_along_axis_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scatterAlongAxis",
    954,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, scatteralongaxis),
    &core_ml__specification__scatter_along_axis_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reverse",
    960,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reverse),
    &core_ml__specification__reverse_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reverseSeq",
    965,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reverseseq),
    &core_ml__specification__reverse_seq_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "splitND",
    975,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, splitnd),
    &core_ml__specification__split_ndlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "concatND",
    980,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, concatnd),
    &core_ml__specification__concat_ndlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "transpose",
    985,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, transpose),
    &core_ml__specification__transpose_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sliceStatic",
    995,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, slicestatic),
    &core_ml__specification__slice_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sliceDynamic",
    1000,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, slicedynamic),
    &core_ml__specification__slice_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "slidingWindows",
    1005,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, slidingwindows),
    &core_ml__specification__sliding_windows_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "topK",
    1015,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, topk),
    &core_ml__specification__top_klayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "argMin",
    1020,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, argmin),
    &core_ml__specification__arg_min_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "argMax",
    1025,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, argmax),
    &core_ml__specification__arg_max_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "embeddingND",
    1040,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, embeddingnd),
    &core_ml__specification__embedding_ndlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "batchedMatmul",
    1045,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, batchedmatmul),
    &core_ml__specification__batched_mat_mul_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "getShape",
    1065,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, getshape),
    &core_ml__specification__get_shape_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "loadConstantND",
    1070,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, loadconstantnd),
    &core_ml__specification__load_constant_ndlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "fillLike",
    1080,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, filllike),
    &core_ml__specification__fill_like_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "fillStatic",
    1085,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, fillstatic),
    &core_ml__specification__fill_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "fillDynamic",
    1090,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, filldynamic),
    &core_ml__specification__fill_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "broadcastToLike",
    1100,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, broadcasttolike),
    &core_ml__specification__broadcast_to_like_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "broadcastToStatic",
    1105,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, broadcasttostatic),
    &core_ml__specification__broadcast_to_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "broadcastToDynamic",
    1110,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, broadcasttodynamic),
    &core_ml__specification__broadcast_to_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "squeeze",
    1120,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, squeeze),
    &core_ml__specification__squeeze_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "expandDims",
    1125,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, expanddims),
    &core_ml__specification__expand_dims_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "flattenTo2D",
    1130,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, flattento2d),
    &core_ml__specification__flatten_to2_dlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reshapeLike",
    1135,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reshapelike),
    &core_ml__specification__reshape_like_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reshapeStatic",
    1140,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reshapestatic),
    &core_ml__specification__reshape_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reshapeDynamic",
    1145,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reshapedynamic),
    &core_ml__specification__reshape_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "rankPreservingReshape",
    1150,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, rankpreservingreshape),
    &core_ml__specification__rank_preserving_reshape_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "constantPad",
    1155,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, constantpad),
    &core_ml__specification__constant_padding_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomNormalLike",
    1170,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randomnormallike),
    &core_ml__specification__random_normal_like_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomNormalStatic",
    1175,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randomnormalstatic),
    &core_ml__specification__random_normal_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomNormalDynamic",
    1180,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randomnormaldynamic),
    &core_ml__specification__random_normal_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomUniformLike",
    1190,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randomuniformlike),
    &core_ml__specification__random_uniform_like_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomUniformStatic",
    1195,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randomuniformstatic),
    &core_ml__specification__random_uniform_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomUniformDynamic",
    1200,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randomuniformdynamic),
    &core_ml__specification__random_uniform_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomBernoulliLike",
    1210,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randombernoullilike),
    &core_ml__specification__random_bernoulli_like_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomBernoulliStatic",
    1215,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randombernoullistatic),
    &core_ml__specification__random_bernoulli_static_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "randomBernoulliDynamic",
    1220,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, randombernoullidynamic),
    &core_ml__specification__random_bernoulli_dynamic_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "categoricalDistribution",
    1230,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, categoricaldistribution),
    &core_ml__specification__categorical_distribution_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceL1",
    1250,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducel1),
    &core_ml__specification__reduce_l1_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceL2",
    1255,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducel2),
    &core_ml__specification__reduce_l2_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceMax",
    1260,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducemax),
    &core_ml__specification__reduce_max_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceMin",
    1265,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducemin),
    &core_ml__specification__reduce_min_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceSum",
    1270,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducesum),
    &core_ml__specification__reduce_sum_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceProd",
    1275,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reduceprod),
    &core_ml__specification__reduce_prod_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceMean",
    1280,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducemean),
    &core_ml__specification__reduce_mean_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceLogSum",
    1285,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducelogsum),
    &core_ml__specification__reduce_log_sum_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceSumSquare",
    1290,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducesumsquare),
    &core_ml__specification__reduce_sum_square_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceLogSumExp",
    1295,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, reducelogsumexp),
    &core_ml__specification__reduce_log_sum_exp_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "whereNonZero",
    1313,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, wherenonzero),
    &core_ml__specification__where_non_zero_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "matrixBandPart",
    1315,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, matrixbandpart),
    &core_ml__specification__matrix_band_part_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "lowerTriangular",
    1320,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, lowertriangular),
    &core_ml__specification__lower_triangular_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "upperTriangular",
    1325,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, uppertriangular),
    &core_ml__specification__upper_triangular_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "whereBroadcastable",
    1330,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, wherebroadcastable),
    &core_ml__specification__where_broadcastable_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "layerNormalization",
    1350,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, layernormalization),
    &core_ml__specification__layer_normalization_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "NonMaximumSuppression",
    1400,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, nonmaximumsuppression),
    &core_ml__specification__non_maximum_suppression_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "oneHot",
    1450,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, onehot),
    &core_ml__specification__one_hot_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "cumSum",
    1455,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, cumsum),
    &core_ml__specification__cum_sum_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "clampedReLU",
    1460,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, clampedrelu),
    &core_ml__specification__clamped_re_lulayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "argSort",
    1461,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, argsort),
    &core_ml__specification__arg_sort_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "pooling3d",
    1465,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, pooling3d),
    &core_ml__specification__pooling3_dlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "globalPooling3d",
    1466,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, globalpooling3d),
    &core_ml__specification__global_pooling3_dlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sliceBySize",
    1470,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, slicebysize),
    &core_ml__specification__slice_by_size_layer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "convolution3d",
    1471,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkLayer, layer_case),
    offsetof(CoreML__Specification__NeuralNetworkLayer, convolution3d),
    &core_ml__specification__convolution3_dlayer_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__neural_network_layer__field_indices_by_name[] = {
  155,   /* field[155] = NonMaximumSuppression */
  62,   /* field[62] = acos */
  68,   /* field[68] = acosh */
  8,   /* field[8] = activation */
  22,   /* field[22] = add */
  85,   /* field[85] = addBroadcastable */
  110,   /* field[110] = argMax */
  109,   /* field[109] = argMin */
  159,   /* field[159] = argSort */
  61,   /* field[61] = asin */
  67,   /* field[67] = asinh */
  63,   /* field[63] = atan */
  69,   /* field[69] = atanh */
  24,   /* field[24] = average */
  112,   /* field[112] = batchedMatmul */
  11,   /* field[11] = batchnorm */
  43,   /* field[43] = biDirectionalLSTM */
  26,   /* field[26] = bias */
  46,   /* field[46] = branch */
  120,   /* field[120] = broadcastToDynamic */
  118,   /* field[118] = broadcastToLike */
  119,   /* field[119] = broadcastToStatic */
  138,   /* field[138] = categoricalDistribution */
  53,   /* field[53] = ceil */
  158,   /* field[158] = clampedReLU */
  52,   /* field[52] = clip */
  35,   /* field[35] = concat */
  103,   /* field[103] = concatND */
  128,   /* field[128] = constantPad */
  6,   /* field[6] = convolution */
  163,   /* field[163] = convolution3d */
  45,   /* field[45] = copy */
  59,   /* field[59] = cos */
  65,   /* field[65] = cosh */
  16,   /* field[16] = crop */
  20,   /* field[20] = cropResize */
  157,   /* field[157] = cumSum */
  44,   /* field[44] = custom */
  87,   /* field[87] = divideBroadcastable */
  29,   /* field[29] = dot */
  10,   /* field[10] = embedding */
  111,   /* field[111] = embeddingND */
  72,   /* field[72] = equal */
  70,   /* field[70] = erf */
  57,   /* field[57] = exp2 */
  122,   /* field[122] = expandDims */
  117,   /* field[117] = fillDynamic */
  115,   /* field[115] = fillLike */
  116,   /* field[116] = fillStatic */
  33,   /* field[33] = flatten */
  123,   /* field[123] = flattenTo2D */
  54,   /* field[54] = floor */
  88,   /* field[88] = floorDivBroadcastable */
  93,   /* field[93] = gather */
  98,   /* field[98] = gatherAlongAxis */
  95,   /* field[95] = gatherND */
  71,   /* field[71] = gelu */
  113,   /* field[113] = getShape */
  161,   /* field[161] = globalPooling3d */
  77,   /* field[77] = greaterEqual */
  76,   /* field[76] = greaterThan */
  41,   /* field[41] = gru */
  9,   /* field[9] = innerProduct */
  1,   /* field[1] = input */
  3,   /* field[3] = inputTensor */
  5,   /* field[5] = isUpdatable */
  13,   /* field[13] = l2normalize */
  154,   /* field[154] = layerNormalization */
  75,   /* field[75] = lessEqual */
  74,   /* field[74] = lessThan */
  31,   /* field[31] = loadConstant */
  114,   /* field[114] = loadConstantND */
  81,   /* field[81] = logicalAnd */
  80,   /* field[80] = logicalNot */
  78,   /* field[78] = logicalOr */
  79,   /* field[79] = logicalXor */
  47,   /* field[47] = loop */
  48,   /* field[48] = loopBreak */
  49,   /* field[49] = loopContinue */
  151,   /* field[151] = lowerTriangular */
  15,   /* field[15] = lrn */
  150,   /* field[150] = matrixBandPart */
  27,   /* field[27] = max */
  84,   /* field[84] = maxBroadcastable */
  28,   /* field[28] = min */
  83,   /* field[83] = minBroadcastable */
  82,   /* field[82] = modBroadcastable */
  23,   /* field[23] = multiply */
  89,   /* field[89] = multiplyBroadcastable */
  12,   /* field[12] = mvn */
  0,   /* field[0] = name */
  73,   /* field[73] = notEqual */
  156,   /* field[156] = oneHot */
  2,   /* field[2] = output */
  4,   /* field[4] = outputTensor */
  17,   /* field[17] = padding */
  34,   /* field[34] = permute */
  7,   /* field[7] = pooling */
  160,   /* field[160] = pooling3d */
  86,   /* field[86] = powBroadcastable */
  137,   /* field[137] = randomBernoulliDynamic */
  135,   /* field[135] = randomBernoulliLike */
  136,   /* field[136] = randomBernoulliStatic */
  131,   /* field[131] = randomNormalDynamic */
  129,   /* field[129] = randomNormalLike */
  130,   /* field[130] = randomNormalStatic */
  134,   /* field[134] = randomUniformDynamic */
  132,   /* field[132] = randomUniformLike */
  133,   /* field[133] = randomUniformStatic */
  51,   /* field[51] = rangeDynamic */
  50,   /* field[50] = rangeStatic */
  127,   /* field[127] = rankPreservingReshape */
  30,   /* field[30] = reduce */
  139,   /* field[139] = reduceL1 */
  140,   /* field[140] = reduceL2 */
  146,   /* field[146] = reduceLogSum */
  148,   /* field[148] = reduceLogSumExp */
  141,   /* field[141] = reduceMax */
  145,   /* field[145] = reduceMean */
  142,   /* field[142] = reduceMin */
  144,   /* field[144] = reduceProd */
  143,   /* field[143] = reduceSum */
  147,   /* field[147] = reduceSumSquare */
  38,   /* field[38] = reorganizeData */
  32,   /* field[32] = reshape */
  126,   /* field[126] = reshapeDynamic */
  124,   /* field[124] = reshapeLike */
  125,   /* field[125] = reshapeStatic */
  19,   /* field[19] = resizeBilinear */
  100,   /* field[100] = reverse */
  101,   /* field[101] = reverseSeq */
  56,   /* field[56] = round */
  25,   /* field[25] = scale */
  94,   /* field[94] = scatter */
  99,   /* field[99] = scatterAlongAxis */
  96,   /* field[96] = scatterND */
  37,   /* field[37] = sequenceRepeat */
  55,   /* field[55] = sign */
  40,   /* field[40] = simpleRecurrent */
  58,   /* field[58] = sin */
  64,   /* field[64] = sinh */
  39,   /* field[39] = slice */
  162,   /* field[162] = sliceBySize */
  106,   /* field[106] = sliceDynamic */
  105,   /* field[105] = sliceStatic */
  107,   /* field[107] = slidingWindows */
  14,   /* field[14] = softmax */
  97,   /* field[97] = softmaxND */
  36,   /* field[36] = split */
  102,   /* field[102] = splitND */
  121,   /* field[121] = squeeze */
  92,   /* field[92] = stack */
  90,   /* field[90] = subtractBroadcastable */
  60,   /* field[60] = tan */
  66,   /* field[66] = tanh */
  91,   /* field[91] = tile */
  108,   /* field[108] = topK */
  104,   /* field[104] = transpose */
  21,   /* field[21] = unary */
  42,   /* field[42] = uniDirectionalLSTM */
  152,   /* field[152] = upperTriangular */
  18,   /* field[18] = upsample */
  153,   /* field[153] = whereBroadcastable */
  149,   /* field[149] = whereNonZero */
};
static const ProtobufCIntRange core_ml__specification__neural_network_layer__number_ranges[152 + 1] =
{
  { 1, 0 },
  { 10, 5 },
  { 100, 6 },
  { 120, 7 },
  { 130, 8 },
  { 140, 9 },
  { 150, 10 },
  { 160, 11 },
  { 165, 12 },
  { 170, 13 },
  { 175, 14 },
  { 180, 15 },
  { 190, 16 },
  { 200, 17 },
  { 210, 18 },
  { 220, 21 },
  { 230, 22 },
  { 240, 24 },
  { 245, 25 },
  { 250, 26 },
  { 260, 27 },
  { 270, 29 },
  { 280, 30 },
  { 290, 31 },
  { 300, 32 },
  { 310, 34 },
  { 320, 35 },
  { 330, 36 },
  { 340, 37 },
  { 345, 38 },
  { 350, 39 },
  { 400, 40 },
  { 410, 41 },
  { 420, 42 },
  { 430, 43 },
  { 500, 44 },
  { 600, 45 },
  { 605, 46 },
  { 615, 47 },
  { 620, 48 },
  { 625, 49 },
  { 635, 50 },
  { 640, 51 },
  { 660, 52 },
  { 665, 53 },
  { 670, 54 },
  { 680, 55 },
  { 685, 56 },
  { 700, 57 },
  { 710, 58 },
  { 715, 59 },
  { 720, 60 },
  { 730, 61 },
  { 735, 62 },
  { 740, 63 },
  { 750, 64 },
  { 755, 65 },
  { 760, 66 },
  { 770, 67 },
  { 775, 68 },
  { 780, 69 },
  { 790, 70 },
  { 795, 71 },
  { 815, 72 },
  { 820, 73 },
  { 825, 74 },
  { 827, 75 },
  { 830, 76 },
  { 832, 77 },
  { 840, 78 },
  { 845, 79 },
  { 850, 80 },
  { 855, 81 },
  { 865, 82 },
  { 870, 83 },
  { 875, 84 },
  { 880, 85 },
  { 885, 86 },
  { 890, 87 },
  { 895, 88 },
  { 900, 89 },
  { 905, 90 },
  { 920, 91 },
  { 925, 92 },
  { 930, 93 },
  { 935, 94 },
  { 940, 95 },
  { 945, 96 },
  { 950, 97 },
  { 952, 98 },
  { 954, 99 },
  { 960, 100 },
  { 965, 101 },
  { 975, 102 },
  { 980, 103 },
  { 985, 104 },
  { 995, 105 },
  { 1000, 106 },
  { 1005, 107 },
  { 1015, 108 },
  { 1020, 109 },
  { 1025, 110 },
  { 1040, 111 },
  { 1045, 112 },
  { 1065, 113 },
  { 1070, 114 },
  { 1080, 115 },
  { 1085, 116 },
  { 1090, 117 },
  { 1100, 118 },
  { 1105, 119 },
  { 1110, 120 },
  { 1120, 121 },
  { 1125, 122 },
  { 1130, 123 },
  { 1135, 124 },
  { 1140, 125 },
  { 1145, 126 },
  { 1150, 127 },
  { 1155, 128 },
  { 1170, 129 },
  { 1175, 130 },
  { 1180, 131 },
  { 1190, 132 },
  { 1195, 133 },
  { 1200, 134 },
  { 1210, 135 },
  { 1215, 136 },
  { 1220, 137 },
  { 1230, 138 },
  { 1250, 139 },
  { 1255, 140 },
  { 1260, 141 },
  { 1265, 142 },
  { 1270, 143 },
  { 1275, 144 },
  { 1280, 145 },
  { 1285, 146 },
  { 1290, 147 },
  { 1295, 148 },
  { 1313, 149 },
  { 1315, 150 },
  { 1320, 151 },
  { 1325, 152 },
  { 1330, 153 },
  { 1350, 154 },
  { 1400, 155 },
  { 1450, 156 },
  { 1455, 157 },
  { 1460, 158 },
  { 1465, 160 },
  { 1470, 162 },
  { 0, 164 }
};
const ProtobufCMessageDescriptor core_ml__specification__neural_network_layer__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkLayer",
  "NeuralNetworkLayer",
  "CoreML__Specification__NeuralNetworkLayer",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NeuralNetworkLayer),
  164,
  core_ml__specification__neural_network_layer__field_descriptors,
  core_ml__specification__neural_network_layer__field_indices_by_name,
  152,  core_ml__specification__neural_network_layer__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__neural_network_layer__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__branch_layer_params__field_descriptors[2] =
{
  {
    "ifBranch",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BranchLayerParams, ifbranch),
    &core_ml__specification__neural_network__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "elseBranch",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BranchLayerParams, elsebranch),
    &core_ml__specification__neural_network__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__branch_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = elseBranch */
  0,   /* field[0] = ifBranch */
};
static const ProtobufCIntRange core_ml__specification__branch_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__branch_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BranchLayerParams",
  "BranchLayerParams",
  "CoreML__Specification__BranchLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BranchLayerParams),
  2,
  core_ml__specification__branch_layer_params__field_descriptors,
  core_ml__specification__branch_layer_params__field_indices_by_name,
  1,  core_ml__specification__branch_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__branch_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__loop_layer_params__field_descriptors[4] =
{
  {
    "maxLoopIterations",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LoopLayerParams, maxloopiterations),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "conditionVar",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LoopLayerParams, conditionvar),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "conditionNetwork",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LoopLayerParams, conditionnetwork),
    &core_ml__specification__neural_network__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bodyNetwork",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LoopLayerParams, bodynetwork),
    &core_ml__specification__neural_network__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__loop_layer_params__field_indices_by_name[] = {
  3,   /* field[3] = bodyNetwork */
  2,   /* field[2] = conditionNetwork */
  1,   /* field[1] = conditionVar */
  0,   /* field[0] = maxLoopIterations */
};
static const ProtobufCIntRange core_ml__specification__loop_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__loop_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LoopLayerParams",
  "LoopLayerParams",
  "CoreML__Specification__LoopLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LoopLayerParams),
  4,
  core_ml__specification__loop_layer_params__field_descriptors,
  core_ml__specification__loop_layer_params__field_indices_by_name,
  1,  core_ml__specification__loop_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__loop_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__loop_break_layer_params__field_descriptors NULL
#define core_ml__specification__loop_break_layer_params__field_indices_by_name NULL
#define core_ml__specification__loop_break_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__loop_break_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LoopBreakLayerParams",
  "LoopBreakLayerParams",
  "CoreML__Specification__LoopBreakLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LoopBreakLayerParams),
  0,
  core_ml__specification__loop_break_layer_params__field_descriptors,
  core_ml__specification__loop_break_layer_params__field_indices_by_name,
  0,  core_ml__specification__loop_break_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__loop_break_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__loop_continue_layer_params__field_descriptors NULL
#define core_ml__specification__loop_continue_layer_params__field_indices_by_name NULL
#define core_ml__specification__loop_continue_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__loop_continue_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LoopContinueLayerParams",
  "LoopContinueLayerParams",
  "CoreML__Specification__LoopContinueLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LoopContinueLayerParams),
  0,
  core_ml__specification__loop_continue_layer_params__field_descriptors,
  core_ml__specification__loop_continue_layer_params__field_indices_by_name,
  0,  core_ml__specification__loop_continue_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__loop_continue_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__copy_layer_params__field_descriptors NULL
#define core_ml__specification__copy_layer_params__field_indices_by_name NULL
#define core_ml__specification__copy_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__copy_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CopyLayerParams",
  "CopyLayerParams",
  "CoreML__Specification__CopyLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CopyLayerParams),
  0,
  core_ml__specification__copy_layer_params__field_descriptors,
  core_ml__specification__copy_layer_params__field_indices_by_name,
  0,  core_ml__specification__copy_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__copy_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__greater_than_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GreaterThanLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__greater_than_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__greater_than_layer_params__number_ranges[1 + 1] =
{
  { 2, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__greater_than_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GreaterThanLayerParams",
  "GreaterThanLayerParams",
  "CoreML__Specification__GreaterThanLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GreaterThanLayerParams),
  1,
  core_ml__specification__greater_than_layer_params__field_descriptors,
  core_ml__specification__greater_than_layer_params__field_indices_by_name,
  1,  core_ml__specification__greater_than_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__greater_than_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__greater_equal_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GreaterEqualLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__greater_equal_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__greater_equal_layer_params__number_ranges[1 + 1] =
{
  { 2, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__greater_equal_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GreaterEqualLayerParams",
  "GreaterEqualLayerParams",
  "CoreML__Specification__GreaterEqualLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GreaterEqualLayerParams),
  1,
  core_ml__specification__greater_equal_layer_params__field_descriptors,
  core_ml__specification__greater_equal_layer_params__field_indices_by_name,
  1,  core_ml__specification__greater_equal_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__greater_equal_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__less_than_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LessThanLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__less_than_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__less_than_layer_params__number_ranges[1 + 1] =
{
  { 2, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__less_than_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LessThanLayerParams",
  "LessThanLayerParams",
  "CoreML__Specification__LessThanLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LessThanLayerParams),
  1,
  core_ml__specification__less_than_layer_params__field_descriptors,
  core_ml__specification__less_than_layer_params__field_indices_by_name,
  1,  core_ml__specification__less_than_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__less_than_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__less_equal_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LessEqualLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__less_equal_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__less_equal_layer_params__number_ranges[1 + 1] =
{
  { 2, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__less_equal_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LessEqualLayerParams",
  "LessEqualLayerParams",
  "CoreML__Specification__LessEqualLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LessEqualLayerParams),
  1,
  core_ml__specification__less_equal_layer_params__field_descriptors,
  core_ml__specification__less_equal_layer_params__field_indices_by_name,
  1,  core_ml__specification__less_equal_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__less_equal_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__equal_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EqualLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__equal_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__equal_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__equal_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.EqualLayerParams",
  "EqualLayerParams",
  "CoreML__Specification__EqualLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__EqualLayerParams),
  1,
  core_ml__specification__equal_layer_params__field_descriptors,
  core_ml__specification__equal_layer_params__field_indices_by_name,
  1,  core_ml__specification__equal_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__equal_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__not_equal_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NotEqualLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__not_equal_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__not_equal_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__not_equal_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NotEqualLayerParams",
  "NotEqualLayerParams",
  "CoreML__Specification__NotEqualLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NotEqualLayerParams),
  1,
  core_ml__specification__not_equal_layer_params__field_descriptors,
  core_ml__specification__not_equal_layer_params__field_indices_by_name,
  1,  core_ml__specification__not_equal_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__not_equal_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__logical_and_layer_params__field_descriptors NULL
#define core_ml__specification__logical_and_layer_params__field_indices_by_name NULL
#define core_ml__specification__logical_and_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__logical_and_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LogicalAndLayerParams",
  "LogicalAndLayerParams",
  "CoreML__Specification__LogicalAndLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LogicalAndLayerParams),
  0,
  core_ml__specification__logical_and_layer_params__field_descriptors,
  core_ml__specification__logical_and_layer_params__field_indices_by_name,
  0,  core_ml__specification__logical_and_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__logical_and_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__logical_or_layer_params__field_descriptors NULL
#define core_ml__specification__logical_or_layer_params__field_indices_by_name NULL
#define core_ml__specification__logical_or_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__logical_or_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LogicalOrLayerParams",
  "LogicalOrLayerParams",
  "CoreML__Specification__LogicalOrLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LogicalOrLayerParams),
  0,
  core_ml__specification__logical_or_layer_params__field_descriptors,
  core_ml__specification__logical_or_layer_params__field_indices_by_name,
  0,  core_ml__specification__logical_or_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__logical_or_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__logical_xor_layer_params__field_descriptors NULL
#define core_ml__specification__logical_xor_layer_params__field_indices_by_name NULL
#define core_ml__specification__logical_xor_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__logical_xor_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LogicalXorLayerParams",
  "LogicalXorLayerParams",
  "CoreML__Specification__LogicalXorLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LogicalXorLayerParams),
  0,
  core_ml__specification__logical_xor_layer_params__field_descriptors,
  core_ml__specification__logical_xor_layer_params__field_indices_by_name,
  0,  core_ml__specification__logical_xor_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__logical_xor_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__logical_not_layer_params__field_descriptors NULL
#define core_ml__specification__logical_not_layer_params__field_indices_by_name NULL
#define core_ml__specification__logical_not_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__logical_not_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LogicalNotLayerParams",
  "LogicalNotLayerParams",
  "CoreML__Specification__LogicalNotLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LogicalNotLayerParams),
  0,
  core_ml__specification__logical_not_layer_params__field_descriptors,
  core_ml__specification__logical_not_layer_params__field_indices_by_name,
  0,  core_ml__specification__logical_not_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__logical_not_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__border_amounts__edge_sizes__field_descriptors[2] =
{
  {
    "startEdgeSize",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BorderAmounts__EdgeSizes, startedgesize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "endEdgeSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BorderAmounts__EdgeSizes, endedgesize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__border_amounts__edge_sizes__field_indices_by_name[] = {
  1,   /* field[1] = endEdgeSize */
  0,   /* field[0] = startEdgeSize */
};
static const ProtobufCIntRange core_ml__specification__border_amounts__edge_sizes__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__border_amounts__edge_sizes__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BorderAmounts.EdgeSizes",
  "EdgeSizes",
  "CoreML__Specification__BorderAmounts__EdgeSizes",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BorderAmounts__EdgeSizes),
  2,
  core_ml__specification__border_amounts__edge_sizes__field_descriptors,
  core_ml__specification__border_amounts__edge_sizes__field_indices_by_name,
  1,  core_ml__specification__border_amounts__edge_sizes__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__border_amounts__edge_sizes__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__border_amounts__field_descriptors[1] =
{
  {
    "borderAmounts",
    10,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__BorderAmounts, n_borderamounts),
    offsetof(CoreML__Specification__BorderAmounts, borderamounts),
    &core_ml__specification__border_amounts__edge_sizes__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__border_amounts__field_indices_by_name[] = {
  0,   /* field[0] = borderAmounts */
};
static const ProtobufCIntRange core_ml__specification__border_amounts__number_ranges[1 + 1] =
{
  { 10, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__border_amounts__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BorderAmounts",
  "BorderAmounts",
  "CoreML__Specification__BorderAmounts",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BorderAmounts),
  1,
  core_ml__specification__border_amounts__field_descriptors,
  core_ml__specification__border_amounts__field_indices_by_name,
  1,  core_ml__specification__border_amounts__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__border_amounts__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__valid_padding__field_descriptors[1] =
{
  {
    "paddingAmounts",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ValidPadding, paddingamounts),
    &core_ml__specification__border_amounts__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__valid_padding__field_indices_by_name[] = {
  0,   /* field[0] = paddingAmounts */
};
static const ProtobufCIntRange core_ml__specification__valid_padding__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__valid_padding__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ValidPadding",
  "ValidPadding",
  "CoreML__Specification__ValidPadding",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ValidPadding),
  1,
  core_ml__specification__valid_padding__field_descriptors,
  core_ml__specification__valid_padding__field_indices_by_name,
  1,  core_ml__specification__valid_padding__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__valid_padding__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__same_padding__same_padding_mode__enum_values_by_number[2] =
{
  { "BOTTOM_RIGHT_HEAVY", "CORE_ML__SPECIFICATION__SAME_PADDING__SAME_PADDING_MODE__BOTTOM_RIGHT_HEAVY", 0 },
  { "TOP_LEFT_HEAVY", "CORE_ML__SPECIFICATION__SAME_PADDING__SAME_PADDING_MODE__TOP_LEFT_HEAVY", 1 },
};
static const ProtobufCIntRange core_ml__specification__same_padding__same_padding_mode__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__same_padding__same_padding_mode__enum_values_by_name[2] =
{
  { "BOTTOM_RIGHT_HEAVY", 0 },
  { "TOP_LEFT_HEAVY", 1 },
};
const ProtobufCEnumDescriptor core_ml__specification__same_padding__same_padding_mode__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SamePadding.SamePaddingMode",
  "SamePaddingMode",
  "CoreML__Specification__SamePadding__SamePaddingMode",
  "CoreML.Specification",
  2,
  core_ml__specification__same_padding__same_padding_mode__enum_values_by_number,
  2,
  core_ml__specification__same_padding__same_padding_mode__enum_values_by_name,
  1,
  core_ml__specification__same_padding__same_padding_mode__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__same_padding__field_descriptors[1] =
{
  {
    "asymmetryMode",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SamePadding, asymmetrymode),
    &core_ml__specification__same_padding__same_padding_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__same_padding__field_indices_by_name[] = {
  0,   /* field[0] = asymmetryMode */
};
static const ProtobufCIntRange core_ml__specification__same_padding__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__same_padding__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SamePadding",
  "SamePadding",
  "CoreML__Specification__SamePadding",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SamePadding),
  1,
  core_ml__specification__same_padding__field_descriptors,
  core_ml__specification__same_padding__field_indices_by_name,
  1,  core_ml__specification__same_padding__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__same_padding__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__sampling_mode__method__enum_values_by_number[4] =
{
  { "STRICT_ALIGN_ENDPOINTS_MODE", "CORE_ML__SPECIFICATION__SAMPLING_MODE__METHOD__STRICT_ALIGN_ENDPOINTS_MODE", 0 },
  { "ALIGN_ENDPOINTS_MODE", "CORE_ML__SPECIFICATION__SAMPLING_MODE__METHOD__ALIGN_ENDPOINTS_MODE", 1 },
  { "UPSAMPLE_MODE", "CORE_ML__SPECIFICATION__SAMPLING_MODE__METHOD__UPSAMPLE_MODE", 2 },
  { "ROI_ALIGN_MODE", "CORE_ML__SPECIFICATION__SAMPLING_MODE__METHOD__ROI_ALIGN_MODE", 3 },
};
static const ProtobufCIntRange core_ml__specification__sampling_mode__method__value_ranges[] = {
{0, 0},{0, 4}
};
static const ProtobufCEnumValueIndex core_ml__specification__sampling_mode__method__enum_values_by_name[4] =
{
  { "ALIGN_ENDPOINTS_MODE", 1 },
  { "ROI_ALIGN_MODE", 3 },
  { "STRICT_ALIGN_ENDPOINTS_MODE", 0 },
  { "UPSAMPLE_MODE", 2 },
};
const ProtobufCEnumDescriptor core_ml__specification__sampling_mode__method__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SamplingMode.Method",
  "Method",
  "CoreML__Specification__SamplingMode__Method",
  "CoreML.Specification",
  4,
  core_ml__specification__sampling_mode__method__enum_values_by_number,
  4,
  core_ml__specification__sampling_mode__method__enum_values_by_name,
  1,
  core_ml__specification__sampling_mode__method__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__sampling_mode__field_descriptors[1] =
{
  {
    "samplingMethod",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SamplingMode, samplingmethod),
    &core_ml__specification__sampling_mode__method__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__sampling_mode__field_indices_by_name[] = {
  0,   /* field[0] = samplingMethod */
};
static const ProtobufCIntRange core_ml__specification__sampling_mode__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__sampling_mode__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SamplingMode",
  "SamplingMode",
  "CoreML__Specification__SamplingMode",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SamplingMode),
  1,
  core_ml__specification__sampling_mode__field_descriptors,
  core_ml__specification__sampling_mode__field_indices_by_name,
  1,  core_ml__specification__sampling_mode__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__sampling_mode__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__box_coordinates_mode__coordinates__enum_values_by_number[4] =
{
  { "CORNERS_HEIGHT_FIRST", "CORE_ML__SPECIFICATION__BOX_COORDINATES_MODE__COORDINATES__CORNERS_HEIGHT_FIRST", 0 },
  { "CORNERS_WIDTH_FIRST", "CORE_ML__SPECIFICATION__BOX_COORDINATES_MODE__COORDINATES__CORNERS_WIDTH_FIRST", 1 },
  { "CENTER_SIZE_HEIGHT_FIRST", "CORE_ML__SPECIFICATION__BOX_COORDINATES_MODE__COORDINATES__CENTER_SIZE_HEIGHT_FIRST", 2 },
  { "CENTER_SIZE_WIDTH_FIRST", "CORE_ML__SPECIFICATION__BOX_COORDINATES_MODE__COORDINATES__CENTER_SIZE_WIDTH_FIRST", 3 },
};
static const ProtobufCIntRange core_ml__specification__box_coordinates_mode__coordinates__value_ranges[] = {
{0, 0},{0, 4}
};
static const ProtobufCEnumValueIndex core_ml__specification__box_coordinates_mode__coordinates__enum_values_by_name[4] =
{
  { "CENTER_SIZE_HEIGHT_FIRST", 2 },
  { "CENTER_SIZE_WIDTH_FIRST", 3 },
  { "CORNERS_HEIGHT_FIRST", 0 },
  { "CORNERS_WIDTH_FIRST", 1 },
};
const ProtobufCEnumDescriptor core_ml__specification__box_coordinates_mode__coordinates__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BoxCoordinatesMode.Coordinates",
  "Coordinates",
  "CoreML__Specification__BoxCoordinatesMode__Coordinates",
  "CoreML.Specification",
  4,
  core_ml__specification__box_coordinates_mode__coordinates__enum_values_by_number,
  4,
  core_ml__specification__box_coordinates_mode__coordinates__enum_values_by_name,
  1,
  core_ml__specification__box_coordinates_mode__coordinates__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__box_coordinates_mode__field_descriptors[1] =
{
  {
    "boxMode",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BoxCoordinatesMode, boxmode),
    &core_ml__specification__box_coordinates_mode__coordinates__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__box_coordinates_mode__field_indices_by_name[] = {
  0,   /* field[0] = boxMode */
};
static const ProtobufCIntRange core_ml__specification__box_coordinates_mode__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__box_coordinates_mode__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BoxCoordinatesMode",
  "BoxCoordinatesMode",
  "CoreML__Specification__BoxCoordinatesMode",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BoxCoordinatesMode),
  1,
  core_ml__specification__box_coordinates_mode__field_descriptors,
  core_ml__specification__box_coordinates_mode__field_indices_by_name,
  1,  core_ml__specification__box_coordinates_mode__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__box_coordinates_mode__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__weight_params__field_descriptors[6] =
{
  {
    "floatValue",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_FLOAT,
    offsetof(CoreML__Specification__WeightParams, n_floatvalue),
    offsetof(CoreML__Specification__WeightParams, floatvalue),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "float16Value",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BYTES,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__WeightParams, float16value),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "rawValue",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BYTES,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__WeightParams, rawvalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "int8RawValue",
    31,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BYTES,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__WeightParams, int8rawvalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "quantization",
    40,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__WeightParams, quantization),
    &core_ml__specification__quantization_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "isUpdatable",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__WeightParams, isupdatable),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__weight_params__field_indices_by_name[] = {
  1,   /* field[1] = float16Value */
  0,   /* field[0] = floatValue */
  3,   /* field[3] = int8RawValue */
  5,   /* field[5] = isUpdatable */
  4,   /* field[4] = quantization */
  2,   /* field[2] = rawValue */
};
static const ProtobufCIntRange core_ml__specification__weight_params__number_ranges[4 + 1] =
{
  { 1, 0 },
  { 30, 2 },
  { 40, 4 },
  { 50, 5 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor core_ml__specification__weight_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.WeightParams",
  "WeightParams",
  "CoreML__Specification__WeightParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__WeightParams),
  6,
  core_ml__specification__weight_params__field_descriptors,
  core_ml__specification__weight_params__field_indices_by_name,
  4,  core_ml__specification__weight_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__weight_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__quantization_params__field_descriptors[3] =
{
  {
    "numberOfBits",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__QuantizationParams, numberofbits),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "linearQuantization",
    101,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__QuantizationParams, quantization_type_case),
    offsetof(CoreML__Specification__QuantizationParams, linearquantization),
    &core_ml__specification__linear_quantization_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "lookupTableQuantization",
    102,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__QuantizationParams, quantization_type_case),
    offsetof(CoreML__Specification__QuantizationParams, lookuptablequantization),
    &core_ml__specification__look_up_table_quantization_params__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__quantization_params__field_indices_by_name[] = {
  1,   /* field[1] = linearQuantization */
  2,   /* field[2] = lookupTableQuantization */
  0,   /* field[0] = numberOfBits */
};
static const ProtobufCIntRange core_ml__specification__quantization_params__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 101, 1 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__quantization_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.QuantizationParams",
  "QuantizationParams",
  "CoreML__Specification__QuantizationParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__QuantizationParams),
  3,
  core_ml__specification__quantization_params__field_descriptors,
  core_ml__specification__quantization_params__field_indices_by_name,
  2,  core_ml__specification__quantization_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__quantization_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__linear_quantization_params__field_descriptors[2] =
{
  {
    "scale",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_FLOAT,
    offsetof(CoreML__Specification__LinearQuantizationParams, n_scale),
    offsetof(CoreML__Specification__LinearQuantizationParams, scale),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_FLOAT,
    offsetof(CoreML__Specification__LinearQuantizationParams, n_bias),
    offsetof(CoreML__Specification__LinearQuantizationParams, bias),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__linear_quantization_params__field_indices_by_name[] = {
  1,   /* field[1] = bias */
  0,   /* field[0] = scale */
};
static const ProtobufCIntRange core_ml__specification__linear_quantization_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__linear_quantization_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LinearQuantizationParams",
  "LinearQuantizationParams",
  "CoreML__Specification__LinearQuantizationParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LinearQuantizationParams),
  2,
  core_ml__specification__linear_quantization_params__field_descriptors,
  core_ml__specification__linear_quantization_params__field_indices_by_name,
  1,  core_ml__specification__linear_quantization_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__linear_quantization_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__look_up_table_quantization_params__field_descriptors[1] =
{
  {
    "floatValue",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_FLOAT,
    offsetof(CoreML__Specification__LookUpTableQuantizationParams, n_floatvalue),
    offsetof(CoreML__Specification__LookUpTableQuantizationParams, floatvalue),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__look_up_table_quantization_params__field_indices_by_name[] = {
  0,   /* field[0] = floatValue */
};
static const ProtobufCIntRange core_ml__specification__look_up_table_quantization_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__look_up_table_quantization_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LookUpTableQuantizationParams",
  "LookUpTableQuantizationParams",
  "CoreML__Specification__LookUpTableQuantizationParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LookUpTableQuantizationParams),
  1,
  core_ml__specification__look_up_table_quantization_params__field_descriptors,
  core_ml__specification__look_up_table_quantization_params__field_indices_by_name,
  1,  core_ml__specification__look_up_table_quantization_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__look_up_table_quantization_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__convolution_layer_params__field_descriptors[13] =
{
  {
    "outputChannels",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConvolutionLayerParams, outputchannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelChannels",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConvolutionLayerParams, kernelchannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "nGroups",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConvolutionLayerParams, ngroups),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelSize",
    20,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ConvolutionLayerParams, n_kernelsize),
    offsetof(CoreML__Specification__ConvolutionLayerParams, kernelsize),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stride",
    30,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ConvolutionLayerParams, n_stride),
    offsetof(CoreML__Specification__ConvolutionLayerParams, stride),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dilationFactor",
    40,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ConvolutionLayerParams, n_dilationfactor),
    offsetof(CoreML__Specification__ConvolutionLayerParams, dilationfactor),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "valid",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ConvolutionLayerParams, convolution_padding_type_case),
    offsetof(CoreML__Specification__ConvolutionLayerParams, valid),
    &core_ml__specification__valid_padding__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "same",
    51,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__ConvolutionLayerParams, convolution_padding_type_case),
    offsetof(CoreML__Specification__ConvolutionLayerParams, same),
    &core_ml__specification__same_padding__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "isDeconvolution",
    60,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConvolutionLayerParams, isdeconvolution),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBias",
    70,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConvolutionLayerParams, hasbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weights",
    90,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConvolutionLayerParams, weights),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    91,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConvolutionLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputShape",
    100,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ConvolutionLayerParams, n_outputshape),
    offsetof(CoreML__Specification__ConvolutionLayerParams, outputshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__convolution_layer_params__field_indices_by_name[] = {
  11,   /* field[11] = bias */
  5,   /* field[5] = dilationFactor */
  9,   /* field[9] = hasBias */
  8,   /* field[8] = isDeconvolution */
  1,   /* field[1] = kernelChannels */
  3,   /* field[3] = kernelSize */
  2,   /* field[2] = nGroups */
  0,   /* field[0] = outputChannels */
  12,   /* field[12] = outputShape */
  7,   /* field[7] = same */
  4,   /* field[4] = stride */
  6,   /* field[6] = valid */
  10,   /* field[10] = weights */
};
static const ProtobufCIntRange core_ml__specification__convolution_layer_params__number_ranges[10 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 20, 3 },
  { 30, 4 },
  { 40, 5 },
  { 50, 6 },
  { 60, 8 },
  { 70, 9 },
  { 90, 10 },
  { 100, 12 },
  { 0, 13 }
};
const ProtobufCMessageDescriptor core_ml__specification__convolution_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ConvolutionLayerParams",
  "ConvolutionLayerParams",
  "CoreML__Specification__ConvolutionLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ConvolutionLayerParams),
  13,
  core_ml__specification__convolution_layer_params__field_descriptors,
  core_ml__specification__convolution_layer_params__field_indices_by_name,
  10,  core_ml__specification__convolution_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__convolution_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__convolution3_dlayer_params__padding_type__enum_values_by_number[3] =
{
  { "CUSTOM", "CORE_ML__SPECIFICATION__CONVOLUTION3_DLAYER_PARAMS__PADDING_TYPE__CUSTOM", 0 },
  { "VALID", "CORE_ML__SPECIFICATION__CONVOLUTION3_DLAYER_PARAMS__PADDING_TYPE__VALID", 1 },
  { "SAME", "CORE_ML__SPECIFICATION__CONVOLUTION3_DLAYER_PARAMS__PADDING_TYPE__SAME", 2 },
};
static const ProtobufCIntRange core_ml__specification__convolution3_dlayer_params__padding_type__value_ranges[] = {
{0, 0},{0, 3}
};
static const ProtobufCEnumValueIndex core_ml__specification__convolution3_dlayer_params__padding_type__enum_values_by_name[3] =
{
  { "CUSTOM", 0 },
  { "SAME", 2 },
  { "VALID", 1 },
};
const ProtobufCEnumDescriptor core_ml__specification__convolution3_dlayer_params__padding_type__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Convolution3DLayerParams.PaddingType",
  "PaddingType",
  "CoreML__Specification__Convolution3DLayerParams__PaddingType",
  "CoreML.Specification",
  3,
  core_ml__specification__convolution3_dlayer_params__padding_type__enum_values_by_number,
  3,
  core_ml__specification__convolution3_dlayer_params__padding_type__enum_values_by_name,
  1,
  core_ml__specification__convolution3_dlayer_params__padding_type__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__convolution3_dlayer_params__field_descriptors[24] =
{
  {
    "outputChannels",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, outputchannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "inputChannels",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, inputchannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "nGroups",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, ngroups),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelDepth",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, kerneldepth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelHeight",
    21,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, kernelheight),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelWidth",
    22,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, kernelwidth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strideDepth",
    31,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, stridedepth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strideHeight",
    32,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, strideheight),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strideWidth",
    33,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, stridewidth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dilationDepth",
    40,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, dilationdepth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dilationHeight",
    41,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, dilationheight),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dilationWidth",
    42,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, dilationwidth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBias",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, hasbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weights",
    60,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, weights),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    61,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "paddingType",
    70,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, paddingtype),
    &core_ml__specification__convolution3_dlayer_params__padding_type__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingFront",
    80,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, custompaddingfront),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingBack",
    81,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, custompaddingback),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingTop",
    82,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, custompaddingtop),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingBottom",
    83,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, custompaddingbottom),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingLeft",
    84,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, custompaddingleft),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingRight",
    85,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, custompaddingright),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "isDeconvolution",
    86,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Convolution3DLayerParams, isdeconvolution),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputShape",
    87,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__Convolution3DLayerParams, n_outputshape),
    offsetof(CoreML__Specification__Convolution3DLayerParams, outputshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__convolution3_dlayer_params__field_indices_by_name[] = {
  14,   /* field[14] = bias */
  17,   /* field[17] = customPaddingBack */
  19,   /* field[19] = customPaddingBottom */
  16,   /* field[16] = customPaddingFront */
  20,   /* field[20] = customPaddingLeft */
  21,   /* field[21] = customPaddingRight */
  18,   /* field[18] = customPaddingTop */
  9,   /* field[9] = dilationDepth */
  10,   /* field[10] = dilationHeight */
  11,   /* field[11] = dilationWidth */
  12,   /* field[12] = hasBias */
  1,   /* field[1] = inputChannels */
  22,   /* field[22] = isDeconvolution */
  3,   /* field[3] = kernelDepth */
  4,   /* field[4] = kernelHeight */
  5,   /* field[5] = kernelWidth */
  2,   /* field[2] = nGroups */
  0,   /* field[0] = outputChannels */
  23,   /* field[23] = outputShape */
  15,   /* field[15] = paddingType */
  6,   /* field[6] = strideDepth */
  7,   /* field[7] = strideHeight */
  8,   /* field[8] = strideWidth */
  13,   /* field[13] = weights */
};
static const ProtobufCIntRange core_ml__specification__convolution3_dlayer_params__number_ranges[9 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 20, 3 },
  { 31, 6 },
  { 40, 9 },
  { 50, 12 },
  { 60, 13 },
  { 70, 15 },
  { 80, 16 },
  { 0, 24 }
};
const ProtobufCMessageDescriptor core_ml__specification__convolution3_dlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Convolution3DLayerParams",
  "Convolution3DLayerParams",
  "CoreML__Specification__Convolution3DLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__Convolution3DLayerParams),
  24,
  core_ml__specification__convolution3_dlayer_params__field_descriptors,
  core_ml__specification__convolution3_dlayer_params__field_indices_by_name,
  9,  core_ml__specification__convolution3_dlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__convolution3_dlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__inner_product_layer_params__field_descriptors[6] =
{
  {
    "inputChannels",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__InnerProductLayerParams, inputchannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputChannels",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__InnerProductLayerParams, outputchannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBias",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__InnerProductLayerParams, hasbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weights",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__InnerProductLayerParams, weights),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    21,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__InnerProductLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "int8DynamicQuantize",
    22,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__InnerProductLayerParams, int8dynamicquantize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__inner_product_layer_params__field_indices_by_name[] = {
  4,   /* field[4] = bias */
  2,   /* field[2] = hasBias */
  0,   /* field[0] = inputChannels */
  5,   /* field[5] = int8DynamicQuantize */
  1,   /* field[1] = outputChannels */
  3,   /* field[3] = weights */
};
static const ProtobufCIntRange core_ml__specification__inner_product_layer_params__number_ranges[3 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 20, 3 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor core_ml__specification__inner_product_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.InnerProductLayerParams",
  "InnerProductLayerParams",
  "CoreML__Specification__InnerProductLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__InnerProductLayerParams),
  6,
  core_ml__specification__inner_product_layer_params__field_descriptors,
  core_ml__specification__inner_product_layer_params__field_indices_by_name,
  3,  core_ml__specification__inner_product_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__inner_product_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__embedding_layer_params__field_descriptors[5] =
{
  {
    "inputDim",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingLayerParams, inputdim),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputChannels",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingLayerParams, outputchannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBias",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingLayerParams, hasbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weights",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingLayerParams, weights),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    21,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__embedding_layer_params__field_indices_by_name[] = {
  4,   /* field[4] = bias */
  2,   /* field[2] = hasBias */
  0,   /* field[0] = inputDim */
  1,   /* field[1] = outputChannels */
  3,   /* field[3] = weights */
};
static const ProtobufCIntRange core_ml__specification__embedding_layer_params__number_ranges[3 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 20, 3 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__embedding_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.EmbeddingLayerParams",
  "EmbeddingLayerParams",
  "CoreML__Specification__EmbeddingLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__EmbeddingLayerParams),
  5,
  core_ml__specification__embedding_layer_params__field_descriptors,
  core_ml__specification__embedding_layer_params__field_indices_by_name,
  3,  core_ml__specification__embedding_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__embedding_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__embedding_ndlayer_params__field_descriptors[5] =
{
  {
    "vocabSize",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingNDLayerParams, vocabsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "embeddingSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingNDLayerParams, embeddingsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBias",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingNDLayerParams, hasbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weights",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingNDLayerParams, weights),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    21,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__EmbeddingNDLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__embedding_ndlayer_params__field_indices_by_name[] = {
  4,   /* field[4] = bias */
  1,   /* field[1] = embeddingSize */
  2,   /* field[2] = hasBias */
  0,   /* field[0] = vocabSize */
  3,   /* field[3] = weights */
};
static const ProtobufCIntRange core_ml__specification__embedding_ndlayer_params__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 20, 3 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__embedding_ndlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.EmbeddingNDLayerParams",
  "EmbeddingNDLayerParams",
  "CoreML__Specification__EmbeddingNDLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__EmbeddingNDLayerParams),
  5,
  core_ml__specification__embedding_ndlayer_params__field_descriptors,
  core_ml__specification__embedding_ndlayer_params__field_indices_by_name,
  2,  core_ml__specification__embedding_ndlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__embedding_ndlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__batchnorm_layer_params__field_descriptors[8] =
{
  {
    "channels",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, channels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "computeMeanVar",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, computemeanvar),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "instanceNormalization",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, instancenormalization),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "epsilon",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, epsilon),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "gamma",
    15,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, gamma),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    16,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, beta),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mean",
    17,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, mean),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "variance",
    18,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchnormLayerParams, variance),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__batchnorm_layer_params__field_indices_by_name[] = {
  5,   /* field[5] = beta */
  0,   /* field[0] = channels */
  1,   /* field[1] = computeMeanVar */
  3,   /* field[3] = epsilon */
  4,   /* field[4] = gamma */
  2,   /* field[2] = instanceNormalization */
  6,   /* field[6] = mean */
  7,   /* field[7] = variance */
};
static const ProtobufCIntRange core_ml__specification__batchnorm_layer_params__number_ranges[4 + 1] =
{
  { 1, 0 },
  { 5, 1 },
  { 10, 3 },
  { 15, 4 },
  { 0, 8 }
};
const ProtobufCMessageDescriptor core_ml__specification__batchnorm_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BatchnormLayerParams",
  "BatchnormLayerParams",
  "CoreML__Specification__BatchnormLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BatchnormLayerParams),
  8,
  core_ml__specification__batchnorm_layer_params__field_descriptors,
  core_ml__specification__batchnorm_layer_params__field_indices_by_name,
  4,  core_ml__specification__batchnorm_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__batchnorm_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__pooling_layer_params__valid_complete_padding__field_descriptors[1] =
{
  {
    "paddingAmounts",
    10,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__PoolingLayerParams__ValidCompletePadding, n_paddingamounts),
    offsetof(CoreML__Specification__PoolingLayerParams__ValidCompletePadding, paddingamounts),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__pooling_layer_params__valid_complete_padding__field_indices_by_name[] = {
  0,   /* field[0] = paddingAmounts */
};
static const ProtobufCIntRange core_ml__specification__pooling_layer_params__valid_complete_padding__number_ranges[1 + 1] =
{
  { 10, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__pooling_layer_params__valid_complete_padding__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PoolingLayerParams.ValidCompletePadding",
  "ValidCompletePadding",
  "CoreML__Specification__PoolingLayerParams__ValidCompletePadding",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PoolingLayerParams__ValidCompletePadding),
  1,
  core_ml__specification__pooling_layer_params__valid_complete_padding__field_descriptors,
  core_ml__specification__pooling_layer_params__valid_complete_padding__field_indices_by_name,
  1,  core_ml__specification__pooling_layer_params__valid_complete_padding__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__pooling_layer_params__valid_complete_padding__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__pooling_layer_params__pooling_type__enum_values_by_number[3] =
{
  { "MAX", "CORE_ML__SPECIFICATION__POOLING_LAYER_PARAMS__POOLING_TYPE__MAX", 0 },
  { "AVERAGE", "CORE_ML__SPECIFICATION__POOLING_LAYER_PARAMS__POOLING_TYPE__AVERAGE", 1 },
  { "L2", "CORE_ML__SPECIFICATION__POOLING_LAYER_PARAMS__POOLING_TYPE__L2", 2 },
};
static const ProtobufCIntRange core_ml__specification__pooling_layer_params__pooling_type__value_ranges[] = {
{0, 0},{0, 3}
};
static const ProtobufCEnumValueIndex core_ml__specification__pooling_layer_params__pooling_type__enum_values_by_name[3] =
{
  { "AVERAGE", 1 },
  { "L2", 2 },
  { "MAX", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__pooling_layer_params__pooling_type__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PoolingLayerParams.PoolingType",
  "PoolingType",
  "CoreML__Specification__PoolingLayerParams__PoolingType",
  "CoreML.Specification",
  3,
  core_ml__specification__pooling_layer_params__pooling_type__enum_values_by_number,
  3,
  core_ml__specification__pooling_layer_params__pooling_type__enum_values_by_name,
  1,
  core_ml__specification__pooling_layer_params__pooling_type__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__pooling_layer_params__field_descriptors[8] =
{
  {
    "type",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__PoolingLayerParams, type),
    &core_ml__specification__pooling_layer_params__pooling_type__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelSize",
    10,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__PoolingLayerParams, n_kernelsize),
    offsetof(CoreML__Specification__PoolingLayerParams, kernelsize),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stride",
    20,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__PoolingLayerParams, n_stride),
    offsetof(CoreML__Specification__PoolingLayerParams, stride),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "valid",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__PoolingLayerParams, pooling_padding_type_case),
    offsetof(CoreML__Specification__PoolingLayerParams, valid),
    &core_ml__specification__valid_padding__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "same",
    31,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__PoolingLayerParams, pooling_padding_type_case),
    offsetof(CoreML__Specification__PoolingLayerParams, same),
    &core_ml__specification__same_padding__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "includeLastPixel",
    32,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__PoolingLayerParams, pooling_padding_type_case),
    offsetof(CoreML__Specification__PoolingLayerParams, includelastpixel),
    &core_ml__specification__pooling_layer_params__valid_complete_padding__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "avgPoolExcludePadding",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__PoolingLayerParams, avgpoolexcludepadding),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "globalPooling",
    60,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__PoolingLayerParams, globalpooling),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__pooling_layer_params__field_indices_by_name[] = {
  6,   /* field[6] = avgPoolExcludePadding */
  7,   /* field[7] = globalPooling */
  5,   /* field[5] = includeLastPixel */
  1,   /* field[1] = kernelSize */
  4,   /* field[4] = same */
  2,   /* field[2] = stride */
  0,   /* field[0] = type */
  3,   /* field[3] = valid */
};
static const ProtobufCIntRange core_ml__specification__pooling_layer_params__number_ranges[6 + 1] =
{
  { 1, 0 },
  { 10, 1 },
  { 20, 2 },
  { 30, 3 },
  { 50, 6 },
  { 60, 7 },
  { 0, 8 }
};
const ProtobufCMessageDescriptor core_ml__specification__pooling_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PoolingLayerParams",
  "PoolingLayerParams",
  "CoreML__Specification__PoolingLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PoolingLayerParams),
  8,
  core_ml__specification__pooling_layer_params__field_descriptors,
  core_ml__specification__pooling_layer_params__field_indices_by_name,
  6,  core_ml__specification__pooling_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__pooling_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__pooling3_dlayer_params__pooling_type3_d__enum_values_by_number[2] =
{
  { "MAX", "CORE_ML__SPECIFICATION__POOLING3_DLAYER_PARAMS__POOLING_TYPE3_D__MAX", 0 },
  { "AVERAGE", "CORE_ML__SPECIFICATION__POOLING3_DLAYER_PARAMS__POOLING_TYPE3_D__AVERAGE", 1 },
};
static const ProtobufCIntRange core_ml__specification__pooling3_dlayer_params__pooling_type3_d__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__pooling3_dlayer_params__pooling_type3_d__enum_values_by_name[2] =
{
  { "AVERAGE", 1 },
  { "MAX", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__pooling3_dlayer_params__pooling_type3_d__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Pooling3DLayerParams.PoolingType3D",
  "PoolingType3D",
  "CoreML__Specification__Pooling3DLayerParams__PoolingType3D",
  "CoreML.Specification",
  2,
  core_ml__specification__pooling3_dlayer_params__pooling_type3_d__enum_values_by_number,
  2,
  core_ml__specification__pooling3_dlayer_params__pooling_type3_d__enum_values_by_name,
  1,
  core_ml__specification__pooling3_dlayer_params__pooling_type3_d__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCEnumValue core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__enum_values_by_number[3] =
{
  { "CUSTOM", "CORE_ML__SPECIFICATION__POOLING3_DLAYER_PARAMS__POOLING3_DPADDING_TYPE__CUSTOM", 0 },
  { "VALID", "CORE_ML__SPECIFICATION__POOLING3_DLAYER_PARAMS__POOLING3_DPADDING_TYPE__VALID", 1 },
  { "SAME", "CORE_ML__SPECIFICATION__POOLING3_DLAYER_PARAMS__POOLING3_DPADDING_TYPE__SAME", 2 },
};
static const ProtobufCIntRange core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__value_ranges[] = {
{0, 0},{0, 3}
};
static const ProtobufCEnumValueIndex core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__enum_values_by_name[3] =
{
  { "CUSTOM", 0 },
  { "SAME", 2 },
  { "VALID", 1 },
};
const ProtobufCEnumDescriptor core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Pooling3DLayerParams.Pooling3DPaddingType",
  "Pooling3DPaddingType",
  "CoreML__Specification__Pooling3DLayerParams__Pooling3DPaddingType",
  "CoreML.Specification",
  3,
  core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__enum_values_by_number,
  3,
  core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__enum_values_by_name,
  1,
  core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__pooling3_dlayer_params__field_descriptors[15] =
{
  {
    "type",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, type),
    &core_ml__specification__pooling3_dlayer_params__pooling_type3_d__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelDepth",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, kerneldepth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelHeight",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, kernelheight),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "kernelWidth",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, kernelwidth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strideDepth",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, stridedepth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strideHeight",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, strideheight),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strideWidth",
    7,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, stridewidth),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingFront",
    8,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, custompaddingfront),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingBack",
    9,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, custompaddingback),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingTop",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, custompaddingtop),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingBottom",
    11,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, custompaddingbottom),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingLeft",
    12,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, custompaddingleft),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "customPaddingRight",
    13,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, custompaddingright),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "countExcludePadding",
    14,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, countexcludepadding),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "paddingType",
    15,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__Pooling3DLayerParams, paddingtype),
    &core_ml__specification__pooling3_dlayer_params__pooling3_dpadding_type__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__pooling3_dlayer_params__field_indices_by_name[] = {
  13,   /* field[13] = countExcludePadding */
  8,   /* field[8] = customPaddingBack */
  10,   /* field[10] = customPaddingBottom */
  7,   /* field[7] = customPaddingFront */
  11,   /* field[11] = customPaddingLeft */
  12,   /* field[12] = customPaddingRight */
  9,   /* field[9] = customPaddingTop */
  1,   /* field[1] = kernelDepth */
  2,   /* field[2] = kernelHeight */
  3,   /* field[3] = kernelWidth */
  14,   /* field[14] = paddingType */
  4,   /* field[4] = strideDepth */
  5,   /* field[5] = strideHeight */
  6,   /* field[6] = strideWidth */
  0,   /* field[0] = type */
};
static const ProtobufCIntRange core_ml__specification__pooling3_dlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 15 }
};
const ProtobufCMessageDescriptor core_ml__specification__pooling3_dlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Pooling3DLayerParams",
  "Pooling3DLayerParams",
  "CoreML__Specification__Pooling3DLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__Pooling3DLayerParams),
  15,
  core_ml__specification__pooling3_dlayer_params__field_descriptors,
  core_ml__specification__pooling3_dlayer_params__field_indices_by_name,
  1,  core_ml__specification__pooling3_dlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__pooling3_dlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__enum_values_by_number[2] =
{
  { "MAX", "CORE_ML__SPECIFICATION__GLOBAL_POOLING3_DLAYER_PARAMS__GLOBAL_POOLING_TYPE3_D__MAX", 0 },
  { "AVERAGE", "CORE_ML__SPECIFICATION__GLOBAL_POOLING3_DLAYER_PARAMS__GLOBAL_POOLING_TYPE3_D__AVERAGE", 1 },
};
static const ProtobufCIntRange core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__enum_values_by_name[2] =
{
  { "AVERAGE", 1 },
  { "MAX", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GlobalPooling3DLayerParams.GlobalPoolingType3D",
  "GlobalPoolingType3D",
  "CoreML__Specification__GlobalPooling3DLayerParams__GlobalPoolingType3D",
  "CoreML.Specification",
  2,
  core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__enum_values_by_number,
  2,
  core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__enum_values_by_name,
  1,
  core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__global_pooling3_dlayer_params__field_descriptors[1] =
{
  {
    "type",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GlobalPooling3DLayerParams, type),
    &core_ml__specification__global_pooling3_dlayer_params__global_pooling_type3_d__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__global_pooling3_dlayer_params__field_indices_by_name[] = {
  0,   /* field[0] = type */
};
static const ProtobufCIntRange core_ml__specification__global_pooling3_dlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__global_pooling3_dlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GlobalPooling3DLayerParams",
  "GlobalPooling3DLayerParams",
  "CoreML__Specification__GlobalPooling3DLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GlobalPooling3DLayerParams),
  1,
  core_ml__specification__global_pooling3_dlayer_params__field_descriptors,
  core_ml__specification__global_pooling3_dlayer_params__field_indices_by_name,
  1,  core_ml__specification__global_pooling3_dlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__global_pooling3_dlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__padding_layer_params__padding_constant__field_descriptors[1] =
{
  {
    "value",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__PaddingLayerParams__PaddingConstant, value),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__padding_layer_params__padding_constant__field_indices_by_name[] = {
  0,   /* field[0] = value */
};
static const ProtobufCIntRange core_ml__specification__padding_layer_params__padding_constant__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__padding_layer_params__padding_constant__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PaddingLayerParams.PaddingConstant",
  "PaddingConstant",
  "CoreML__Specification__PaddingLayerParams__PaddingConstant",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PaddingLayerParams__PaddingConstant),
  1,
  core_ml__specification__padding_layer_params__padding_constant__field_descriptors,
  core_ml__specification__padding_layer_params__padding_constant__field_indices_by_name,
  1,  core_ml__specification__padding_layer_params__padding_constant__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__padding_layer_params__padding_constant__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__padding_layer_params__padding_reflection__field_descriptors NULL
#define core_ml__specification__padding_layer_params__padding_reflection__field_indices_by_name NULL
#define core_ml__specification__padding_layer_params__padding_reflection__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__padding_layer_params__padding_reflection__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PaddingLayerParams.PaddingReflection",
  "PaddingReflection",
  "CoreML__Specification__PaddingLayerParams__PaddingReflection",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PaddingLayerParams__PaddingReflection),
  0,
  core_ml__specification__padding_layer_params__padding_reflection__field_descriptors,
  core_ml__specification__padding_layer_params__padding_reflection__field_indices_by_name,
  0,  core_ml__specification__padding_layer_params__padding_reflection__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__padding_layer_params__padding_reflection__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__padding_layer_params__padding_replication__field_descriptors NULL
#define core_ml__specification__padding_layer_params__padding_replication__field_indices_by_name NULL
#define core_ml__specification__padding_layer_params__padding_replication__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__padding_layer_params__padding_replication__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PaddingLayerParams.PaddingReplication",
  "PaddingReplication",
  "CoreML__Specification__PaddingLayerParams__PaddingReplication",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PaddingLayerParams__PaddingReplication),
  0,
  core_ml__specification__padding_layer_params__padding_replication__field_descriptors,
  core_ml__specification__padding_layer_params__padding_replication__field_indices_by_name,
  0,  core_ml__specification__padding_layer_params__padding_replication__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__padding_layer_params__padding_replication__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__padding_layer_params__field_descriptors[4] =
{
  {
    "constant",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__PaddingLayerParams, padding_type_case),
    offsetof(CoreML__Specification__PaddingLayerParams, constant),
    &core_ml__specification__padding_layer_params__padding_constant__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reflection",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__PaddingLayerParams, padding_type_case),
    offsetof(CoreML__Specification__PaddingLayerParams, reflection),
    &core_ml__specification__padding_layer_params__padding_reflection__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "replication",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__PaddingLayerParams, padding_type_case),
    offsetof(CoreML__Specification__PaddingLayerParams, replication),
    &core_ml__specification__padding_layer_params__padding_replication__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "paddingAmounts",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__PaddingLayerParams, paddingamounts),
    &core_ml__specification__border_amounts__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__padding_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = constant */
  3,   /* field[3] = paddingAmounts */
  1,   /* field[1] = reflection */
  2,   /* field[2] = replication */
};
static const ProtobufCIntRange core_ml__specification__padding_layer_params__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 10, 3 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__padding_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PaddingLayerParams",
  "PaddingLayerParams",
  "CoreML__Specification__PaddingLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PaddingLayerParams),
  4,
  core_ml__specification__padding_layer_params__field_descriptors,
  core_ml__specification__padding_layer_params__field_indices_by_name,
  2,  core_ml__specification__padding_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__padding_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__concat_layer_params__field_descriptors[1] =
{
  {
    "sequenceConcat",
    100,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConcatLayerParams, sequenceconcat),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__concat_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = sequenceConcat */
};
static const ProtobufCIntRange core_ml__specification__concat_layer_params__number_ranges[1 + 1] =
{
  { 100, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__concat_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ConcatLayerParams",
  "ConcatLayerParams",
  "CoreML__Specification__ConcatLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ConcatLayerParams),
  1,
  core_ml__specification__concat_layer_params__field_descriptors,
  core_ml__specification__concat_layer_params__field_indices_by_name,
  1,  core_ml__specification__concat_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__concat_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__lrnlayer_params__field_descriptors[4] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LRNLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LRNLayerParams, beta),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "localSize",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LRNLayerParams, localsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "k",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LRNLayerParams, k),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__lrnlayer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
  1,   /* field[1] = beta */
  3,   /* field[3] = k */
  2,   /* field[2] = localSize */
};
static const ProtobufCIntRange core_ml__specification__lrnlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__lrnlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LRNLayerParams",
  "LRNLayerParams",
  "CoreML__Specification__LRNLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LRNLayerParams),
  4,
  core_ml__specification__lrnlayer_params__field_descriptors,
  core_ml__specification__lrnlayer_params__field_indices_by_name,
  1,  core_ml__specification__lrnlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__lrnlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__softmax_layer_params__field_descriptors NULL
#define core_ml__specification__softmax_layer_params__field_indices_by_name NULL
#define core_ml__specification__softmax_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__softmax_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SoftmaxLayerParams",
  "SoftmaxLayerParams",
  "CoreML__Specification__SoftmaxLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SoftmaxLayerParams),
  0,
  core_ml__specification__softmax_layer_params__field_descriptors,
  core_ml__specification__softmax_layer_params__field_indices_by_name,
  0,  core_ml__specification__softmax_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__softmax_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__split_layer_params__field_descriptors[1] =
{
  {
    "nOutputs",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SplitLayerParams, noutputs),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__split_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = nOutputs */
};
static const ProtobufCIntRange core_ml__specification__split_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__split_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SplitLayerParams",
  "SplitLayerParams",
  "CoreML__Specification__SplitLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SplitLayerParams),
  1,
  core_ml__specification__split_layer_params__field_descriptors,
  core_ml__specification__split_layer_params__field_indices_by_name,
  1,  core_ml__specification__split_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__split_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__add_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__AddLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__add_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__add_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__add_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AddLayerParams",
  "AddLayerParams",
  "CoreML__Specification__AddLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AddLayerParams),
  1,
  core_ml__specification__add_layer_params__field_descriptors,
  core_ml__specification__add_layer_params__field_indices_by_name,
  1,  core_ml__specification__add_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__add_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__multiply_layer_params__field_descriptors[1] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MultiplyLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__multiply_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
};
static const ProtobufCIntRange core_ml__specification__multiply_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__multiply_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MultiplyLayerParams",
  "MultiplyLayerParams",
  "CoreML__Specification__MultiplyLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MultiplyLayerParams),
  1,
  core_ml__specification__multiply_layer_params__field_descriptors,
  core_ml__specification__multiply_layer_params__field_indices_by_name,
  1,  core_ml__specification__multiply_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__multiply_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__unary_function_layer_params__operation__enum_values_by_number[8] =
{
  { "SQRT", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__SQRT", 0 },
  { "RSQRT", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__RSQRT", 1 },
  { "INVERSE", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__INVERSE", 2 },
  { "POWER", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__POWER", 3 },
  { "EXP", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__EXP", 4 },
  { "LOG", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__LOG", 5 },
  { "ABS", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__ABS", 6 },
  { "THRESHOLD", "CORE_ML__SPECIFICATION__UNARY_FUNCTION_LAYER_PARAMS__OPERATION__THRESHOLD", 7 },
};
static const ProtobufCIntRange core_ml__specification__unary_function_layer_params__operation__value_ranges[] = {
{0, 0},{0, 8}
};
static const ProtobufCEnumValueIndex core_ml__specification__unary_function_layer_params__operation__enum_values_by_name[8] =
{
  { "ABS", 6 },
  { "EXP", 4 },
  { "INVERSE", 2 },
  { "LOG", 5 },
  { "POWER", 3 },
  { "RSQRT", 1 },
  { "SQRT", 0 },
  { "THRESHOLD", 7 },
};
const ProtobufCEnumDescriptor core_ml__specification__unary_function_layer_params__operation__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.UnaryFunctionLayerParams.Operation",
  "Operation",
  "CoreML__Specification__UnaryFunctionLayerParams__Operation",
  "CoreML.Specification",
  8,
  core_ml__specification__unary_function_layer_params__operation__enum_values_by_number,
  8,
  core_ml__specification__unary_function_layer_params__operation__enum_values_by_name,
  1,
  core_ml__specification__unary_function_layer_params__operation__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__unary_function_layer_params__field_descriptors[5] =
{
  {
    "type",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UnaryFunctionLayerParams, type),
    &core_ml__specification__unary_function_layer_params__operation__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "alpha",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UnaryFunctionLayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "epsilon",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UnaryFunctionLayerParams, epsilon),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "shift",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UnaryFunctionLayerParams, shift),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scale",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UnaryFunctionLayerParams, scale),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__unary_function_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = alpha */
  2,   /* field[2] = epsilon */
  4,   /* field[4] = scale */
  3,   /* field[3] = shift */
  0,   /* field[0] = type */
};
static const ProtobufCIntRange core_ml__specification__unary_function_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__unary_function_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.UnaryFunctionLayerParams",
  "UnaryFunctionLayerParams",
  "CoreML__Specification__UnaryFunctionLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__UnaryFunctionLayerParams),
  5,
  core_ml__specification__unary_function_layer_params__field_descriptors,
  core_ml__specification__unary_function_layer_params__field_indices_by_name,
  1,  core_ml__specification__unary_function_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__unary_function_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__upsample_layer_params__interpolation_mode__enum_values_by_number[2] =
{
  { "NN", "CORE_ML__SPECIFICATION__UPSAMPLE_LAYER_PARAMS__INTERPOLATION_MODE__NN", 0 },
  { "BILINEAR", "CORE_ML__SPECIFICATION__UPSAMPLE_LAYER_PARAMS__INTERPOLATION_MODE__BILINEAR", 1 },
};
static const ProtobufCIntRange core_ml__specification__upsample_layer_params__interpolation_mode__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__upsample_layer_params__interpolation_mode__enum_values_by_name[2] =
{
  { "BILINEAR", 1 },
  { "NN", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__upsample_layer_params__interpolation_mode__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.UpsampleLayerParams.InterpolationMode",
  "InterpolationMode",
  "CoreML__Specification__UpsampleLayerParams__InterpolationMode",
  "CoreML.Specification",
  2,
  core_ml__specification__upsample_layer_params__interpolation_mode__enum_values_by_number,
  2,
  core_ml__specification__upsample_layer_params__interpolation_mode__enum_values_by_name,
  1,
  core_ml__specification__upsample_layer_params__interpolation_mode__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCEnumValue core_ml__specification__upsample_layer_params__linear_upsample_mode__enum_values_by_number[3] =
{
  { "DEFAULT", "CORE_ML__SPECIFICATION__UPSAMPLE_LAYER_PARAMS__LINEAR_UPSAMPLE_MODE__DEFAULT", 0 },
  { "ALIGN_CORNERS_TRUE", "CORE_ML__SPECIFICATION__UPSAMPLE_LAYER_PARAMS__LINEAR_UPSAMPLE_MODE__ALIGN_CORNERS_TRUE", 1 },
  { "ALIGN_CORNERS_FALSE", "CORE_ML__SPECIFICATION__UPSAMPLE_LAYER_PARAMS__LINEAR_UPSAMPLE_MODE__ALIGN_CORNERS_FALSE", 2 },
};
static const ProtobufCIntRange core_ml__specification__upsample_layer_params__linear_upsample_mode__value_ranges[] = {
{0, 0},{0, 3}
};
static const ProtobufCEnumValueIndex core_ml__specification__upsample_layer_params__linear_upsample_mode__enum_values_by_name[3] =
{
  { "ALIGN_CORNERS_FALSE", 2 },
  { "ALIGN_CORNERS_TRUE", 1 },
  { "DEFAULT", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__upsample_layer_params__linear_upsample_mode__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.UpsampleLayerParams.LinearUpsampleMode",
  "LinearUpsampleMode",
  "CoreML__Specification__UpsampleLayerParams__LinearUpsampleMode",
  "CoreML.Specification",
  3,
  core_ml__specification__upsample_layer_params__linear_upsample_mode__enum_values_by_number,
  3,
  core_ml__specification__upsample_layer_params__linear_upsample_mode__enum_values_by_name,
  1,
  core_ml__specification__upsample_layer_params__linear_upsample_mode__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__upsample_layer_params__field_descriptors[4] =
{
  {
    "scalingFactor",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__UpsampleLayerParams, n_scalingfactor),
    offsetof(CoreML__Specification__UpsampleLayerParams, scalingfactor),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mode",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UpsampleLayerParams, mode),
    &core_ml__specification__upsample_layer_params__interpolation_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "linearUpsampleMode",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UpsampleLayerParams, linearupsamplemode),
    &core_ml__specification__upsample_layer_params__linear_upsample_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "fractionalScalingFactor",
    7,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_FLOAT,
    offsetof(CoreML__Specification__UpsampleLayerParams, n_fractionalscalingfactor),
    offsetof(CoreML__Specification__UpsampleLayerParams, fractionalscalingfactor),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__upsample_layer_params__field_indices_by_name[] = {
  3,   /* field[3] = fractionalScalingFactor */
  2,   /* field[2] = linearUpsampleMode */
  1,   /* field[1] = mode */
  0,   /* field[0] = scalingFactor */
};
static const ProtobufCIntRange core_ml__specification__upsample_layer_params__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 5, 1 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__upsample_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.UpsampleLayerParams",
  "UpsampleLayerParams",
  "CoreML__Specification__UpsampleLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__UpsampleLayerParams),
  4,
  core_ml__specification__upsample_layer_params__field_descriptors,
  core_ml__specification__upsample_layer_params__field_indices_by_name,
  2,  core_ml__specification__upsample_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__upsample_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__resize_bilinear_layer_params__field_descriptors[2] =
{
  {
    "targetSize",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ResizeBilinearLayerParams, n_targetsize),
    offsetof(CoreML__Specification__ResizeBilinearLayerParams, targetsize),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mode",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ResizeBilinearLayerParams, mode),
    &core_ml__specification__sampling_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__resize_bilinear_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = mode */
  0,   /* field[0] = targetSize */
};
static const ProtobufCIntRange core_ml__specification__resize_bilinear_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__resize_bilinear_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ResizeBilinearLayerParams",
  "ResizeBilinearLayerParams",
  "CoreML__Specification__ResizeBilinearLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ResizeBilinearLayerParams),
  2,
  core_ml__specification__resize_bilinear_layer_params__field_descriptors,
  core_ml__specification__resize_bilinear_layer_params__field_indices_by_name,
  1,  core_ml__specification__resize_bilinear_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__resize_bilinear_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__crop_resize_layer_params__field_descriptors[5] =
{
  {
    "targetSize",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__CropResizeLayerParams, n_targetsize),
    offsetof(CoreML__Specification__CropResizeLayerParams, targetsize),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "normalizedCoordinates",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CropResizeLayerParams, normalizedcoordinates),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mode",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CropResizeLayerParams, mode),
    &core_ml__specification__sampling_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "boxIndicesMode",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CropResizeLayerParams, boxindicesmode),
    &core_ml__specification__box_coordinates_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "spatialScale",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CropResizeLayerParams, spatialscale),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__crop_resize_layer_params__field_indices_by_name[] = {
  3,   /* field[3] = boxIndicesMode */
  2,   /* field[2] = mode */
  1,   /* field[1] = normalizedCoordinates */
  4,   /* field[4] = spatialScale */
  0,   /* field[0] = targetSize */
};
static const ProtobufCIntRange core_ml__specification__crop_resize_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__crop_resize_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CropResizeLayerParams",
  "CropResizeLayerParams",
  "CoreML__Specification__CropResizeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CropResizeLayerParams),
  5,
  core_ml__specification__crop_resize_layer_params__field_descriptors,
  core_ml__specification__crop_resize_layer_params__field_indices_by_name,
  1,  core_ml__specification__crop_resize_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__crop_resize_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__bias_layer_params__field_descriptors[2] =
{
  {
    "shape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__BiasLayerParams, n_shape),
    offsetof(CoreML__Specification__BiasLayerParams, shape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BiasLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__bias_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = bias */
  0,   /* field[0] = shape */
};
static const ProtobufCIntRange core_ml__specification__bias_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__bias_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BiasLayerParams",
  "BiasLayerParams",
  "CoreML__Specification__BiasLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BiasLayerParams),
  2,
  core_ml__specification__bias_layer_params__field_descriptors,
  core_ml__specification__bias_layer_params__field_indices_by_name,
  1,  core_ml__specification__bias_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__bias_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__scale_layer_params__field_descriptors[5] =
{
  {
    "shapeScale",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ScaleLayerParams, n_shapescale),
    offsetof(CoreML__Specification__ScaleLayerParams, shapescale),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scale",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScaleLayerParams, scale),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBias",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScaleLayerParams, hasbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "shapeBias",
    4,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ScaleLayerParams, n_shapebias),
    offsetof(CoreML__Specification__ScaleLayerParams, shapebias),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScaleLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__scale_layer_params__field_indices_by_name[] = {
  4,   /* field[4] = bias */
  2,   /* field[2] = hasBias */
  1,   /* field[1] = scale */
  3,   /* field[3] = shapeBias */
  0,   /* field[0] = shapeScale */
};
static const ProtobufCIntRange core_ml__specification__scale_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__scale_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ScaleLayerParams",
  "ScaleLayerParams",
  "CoreML__Specification__ScaleLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ScaleLayerParams),
  5,
  core_ml__specification__scale_layer_params__field_descriptors,
  core_ml__specification__scale_layer_params__field_indices_by_name,
  1,  core_ml__specification__scale_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__scale_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__load_constant_layer_params__field_descriptors[2] =
{
  {
    "shape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__LoadConstantLayerParams, n_shape),
    offsetof(CoreML__Specification__LoadConstantLayerParams, shape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "data",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LoadConstantLayerParams, data),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__load_constant_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = data */
  0,   /* field[0] = shape */
};
static const ProtobufCIntRange core_ml__specification__load_constant_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__load_constant_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LoadConstantLayerParams",
  "LoadConstantLayerParams",
  "CoreML__Specification__LoadConstantLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LoadConstantLayerParams),
  2,
  core_ml__specification__load_constant_layer_params__field_descriptors,
  core_ml__specification__load_constant_layer_params__field_indices_by_name,
  1,  core_ml__specification__load_constant_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__load_constant_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__l2_normalize_layer_params__field_descriptors[1] =
{
  {
    "epsilon",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__L2NormalizeLayerParams, epsilon),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__l2_normalize_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = epsilon */
};
static const ProtobufCIntRange core_ml__specification__l2_normalize_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__l2_normalize_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.L2NormalizeLayerParams",
  "L2NormalizeLayerParams",
  "CoreML__Specification__L2NormalizeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__L2NormalizeLayerParams),
  1,
  core_ml__specification__l2_normalize_layer_params__field_descriptors,
  core_ml__specification__l2_normalize_layer_params__field_indices_by_name,
  1,  core_ml__specification__l2_normalize_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__l2_normalize_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__flatten_layer_params__flatten_order__enum_values_by_number[2] =
{
  { "CHANNEL_FIRST", "CORE_ML__SPECIFICATION__FLATTEN_LAYER_PARAMS__FLATTEN_ORDER__CHANNEL_FIRST", 0 },
  { "CHANNEL_LAST", "CORE_ML__SPECIFICATION__FLATTEN_LAYER_PARAMS__FLATTEN_ORDER__CHANNEL_LAST", 1 },
};
static const ProtobufCIntRange core_ml__specification__flatten_layer_params__flatten_order__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__flatten_layer_params__flatten_order__enum_values_by_name[2] =
{
  { "CHANNEL_FIRST", 0 },
  { "CHANNEL_LAST", 1 },
};
const ProtobufCEnumDescriptor core_ml__specification__flatten_layer_params__flatten_order__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FlattenLayerParams.FlattenOrder",
  "FlattenOrder",
  "CoreML__Specification__FlattenLayerParams__FlattenOrder",
  "CoreML.Specification",
  2,
  core_ml__specification__flatten_layer_params__flatten_order__enum_values_by_number,
  2,
  core_ml__specification__flatten_layer_params__flatten_order__enum_values_by_name,
  1,
  core_ml__specification__flatten_layer_params__flatten_order__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__flatten_layer_params__field_descriptors[1] =
{
  {
    "mode",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__FlattenLayerParams, mode),
    &core_ml__specification__flatten_layer_params__flatten_order__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__flatten_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = mode */
};
static const ProtobufCIntRange core_ml__specification__flatten_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__flatten_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FlattenLayerParams",
  "FlattenLayerParams",
  "CoreML__Specification__FlattenLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__FlattenLayerParams),
  1,
  core_ml__specification__flatten_layer_params__field_descriptors,
  core_ml__specification__flatten_layer_params__field_indices_by_name,
  1,  core_ml__specification__flatten_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__flatten_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__reshape_layer_params__reshape_order__enum_values_by_number[2] =
{
  { "CHANNEL_FIRST", "CORE_ML__SPECIFICATION__RESHAPE_LAYER_PARAMS__RESHAPE_ORDER__CHANNEL_FIRST", 0 },
  { "CHANNEL_LAST", "CORE_ML__SPECIFICATION__RESHAPE_LAYER_PARAMS__RESHAPE_ORDER__CHANNEL_LAST", 1 },
};
static const ProtobufCIntRange core_ml__specification__reshape_layer_params__reshape_order__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__reshape_layer_params__reshape_order__enum_values_by_name[2] =
{
  { "CHANNEL_FIRST", 0 },
  { "CHANNEL_LAST", 1 },
};
const ProtobufCEnumDescriptor core_ml__specification__reshape_layer_params__reshape_order__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReshapeLayerParams.ReshapeOrder",
  "ReshapeOrder",
  "CoreML__Specification__ReshapeLayerParams__ReshapeOrder",
  "CoreML.Specification",
  2,
  core_ml__specification__reshape_layer_params__reshape_order__enum_values_by_number,
  2,
  core_ml__specification__reshape_layer_params__reshape_order__enum_values_by_name,
  1,
  core_ml__specification__reshape_layer_params__reshape_order__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reshape_layer_params__field_descriptors[2] =
{
  {
    "targetShape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReshapeLayerParams, n_targetshape),
    offsetof(CoreML__Specification__ReshapeLayerParams, targetshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mode",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReshapeLayerParams, mode),
    &core_ml__specification__reshape_layer_params__reshape_order__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reshape_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = mode */
  0,   /* field[0] = targetShape */
};
static const ProtobufCIntRange core_ml__specification__reshape_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__reshape_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReshapeLayerParams",
  "ReshapeLayerParams",
  "CoreML__Specification__ReshapeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReshapeLayerParams),
  2,
  core_ml__specification__reshape_layer_params__field_descriptors,
  core_ml__specification__reshape_layer_params__field_indices_by_name,
  1,  core_ml__specification__reshape_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reshape_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__permute_layer_params__field_descriptors[1] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__PermuteLayerParams, n_axis),
    offsetof(CoreML__Specification__PermuteLayerParams, axis),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__permute_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
};
static const ProtobufCIntRange core_ml__specification__permute_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__permute_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PermuteLayerParams",
  "PermuteLayerParams",
  "CoreML__Specification__PermuteLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PermuteLayerParams),
  1,
  core_ml__specification__permute_layer_params__field_descriptors,
  core_ml__specification__permute_layer_params__field_indices_by_name,
  1,  core_ml__specification__permute_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__permute_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__reorganize_data_layer_params__reorganization_type__enum_values_by_number[3] =
{
  { "SPACE_TO_DEPTH", "CORE_ML__SPECIFICATION__REORGANIZE_DATA_LAYER_PARAMS__REORGANIZATION_TYPE__SPACE_TO_DEPTH", 0 },
  { "DEPTH_TO_SPACE", "CORE_ML__SPECIFICATION__REORGANIZE_DATA_LAYER_PARAMS__REORGANIZATION_TYPE__DEPTH_TO_SPACE", 1 },
  { "PIXEL_SHUFFLE", "CORE_ML__SPECIFICATION__REORGANIZE_DATA_LAYER_PARAMS__REORGANIZATION_TYPE__PIXEL_SHUFFLE", 2 },
};
static const ProtobufCIntRange core_ml__specification__reorganize_data_layer_params__reorganization_type__value_ranges[] = {
{0, 0},{0, 3}
};
static const ProtobufCEnumValueIndex core_ml__specification__reorganize_data_layer_params__reorganization_type__enum_values_by_name[3] =
{
  { "DEPTH_TO_SPACE", 1 },
  { "PIXEL_SHUFFLE", 2 },
  { "SPACE_TO_DEPTH", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__reorganize_data_layer_params__reorganization_type__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReorganizeDataLayerParams.ReorganizationType",
  "ReorganizationType",
  "CoreML__Specification__ReorganizeDataLayerParams__ReorganizationType",
  "CoreML.Specification",
  3,
  core_ml__specification__reorganize_data_layer_params__reorganization_type__enum_values_by_number,
  3,
  core_ml__specification__reorganize_data_layer_params__reorganization_type__enum_values_by_name,
  1,
  core_ml__specification__reorganize_data_layer_params__reorganization_type__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reorganize_data_layer_params__field_descriptors[2] =
{
  {
    "mode",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReorganizeDataLayerParams, mode),
    &core_ml__specification__reorganize_data_layer_params__reorganization_type__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "blockSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReorganizeDataLayerParams, blocksize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reorganize_data_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = blockSize */
  0,   /* field[0] = mode */
};
static const ProtobufCIntRange core_ml__specification__reorganize_data_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__reorganize_data_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReorganizeDataLayerParams",
  "ReorganizeDataLayerParams",
  "CoreML__Specification__ReorganizeDataLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReorganizeDataLayerParams),
  2,
  core_ml__specification__reorganize_data_layer_params__field_descriptors,
  core_ml__specification__reorganize_data_layer_params__field_indices_by_name,
  1,  core_ml__specification__reorganize_data_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reorganize_data_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__slice_layer_params__slice_axis__enum_values_by_number[3] =
{
  { "CHANNEL_AXIS", "CORE_ML__SPECIFICATION__SLICE_LAYER_PARAMS__SLICE_AXIS__CHANNEL_AXIS", 0 },
  { "HEIGHT_AXIS", "CORE_ML__SPECIFICATION__SLICE_LAYER_PARAMS__SLICE_AXIS__HEIGHT_AXIS", 1 },
  { "WIDTH_AXIS", "CORE_ML__SPECIFICATION__SLICE_LAYER_PARAMS__SLICE_AXIS__WIDTH_AXIS", 2 },
};
static const ProtobufCIntRange core_ml__specification__slice_layer_params__slice_axis__value_ranges[] = {
{0, 0},{0, 3}
};
static const ProtobufCEnumValueIndex core_ml__specification__slice_layer_params__slice_axis__enum_values_by_name[3] =
{
  { "CHANNEL_AXIS", 0 },
  { "HEIGHT_AXIS", 1 },
  { "WIDTH_AXIS", 2 },
};
const ProtobufCEnumDescriptor core_ml__specification__slice_layer_params__slice_axis__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SliceLayerParams.SliceAxis",
  "SliceAxis",
  "CoreML__Specification__SliceLayerParams__SliceAxis",
  "CoreML.Specification",
  3,
  core_ml__specification__slice_layer_params__slice_axis__enum_values_by_number,
  3,
  core_ml__specification__slice_layer_params__slice_axis__enum_values_by_name,
  1,
  core_ml__specification__slice_layer_params__slice_axis__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__slice_layer_params__field_descriptors[4] =
{
  {
    "startIndex",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SliceLayerParams, startindex),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "endIndex",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SliceLayerParams, endindex),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stride",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SliceLayerParams, stride),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "axis",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SliceLayerParams, axis),
    &core_ml__specification__slice_layer_params__slice_axis__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__slice_layer_params__field_indices_by_name[] = {
  3,   /* field[3] = axis */
  1,   /* field[1] = endIndex */
  0,   /* field[0] = startIndex */
  2,   /* field[2] = stride */
};
static const ProtobufCIntRange core_ml__specification__slice_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__slice_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SliceLayerParams",
  "SliceLayerParams",
  "CoreML__Specification__SliceLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SliceLayerParams),
  4,
  core_ml__specification__slice_layer_params__field_descriptors,
  core_ml__specification__slice_layer_params__field_indices_by_name,
  1,  core_ml__specification__slice_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__slice_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__reduce_layer_params__reduce_operation__enum_values_by_number[10] =
{
  { "SUM", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__SUM", 0 },
  { "AVG", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__AVG", 1 },
  { "PROD", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__PROD", 2 },
  { "LOGSUM", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__LOGSUM", 3 },
  { "SUMSQUARE", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__SUMSQUARE", 4 },
  { "L1", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__L1", 5 },
  { "L2", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__L2", 6 },
  { "MAX", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__MAX", 7 },
  { "MIN", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__MIN", 8 },
  { "ARGMAX", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_OPERATION__ARGMAX", 9 },
};
static const ProtobufCIntRange core_ml__specification__reduce_layer_params__reduce_operation__value_ranges[] = {
{0, 0},{0, 10}
};
static const ProtobufCEnumValueIndex core_ml__specification__reduce_layer_params__reduce_operation__enum_values_by_name[10] =
{
  { "ARGMAX", 9 },
  { "AVG", 1 },
  { "L1", 5 },
  { "L2", 6 },
  { "LOGSUM", 3 },
  { "MAX", 7 },
  { "MIN", 8 },
  { "PROD", 2 },
  { "SUM", 0 },
  { "SUMSQUARE", 4 },
};
const ProtobufCEnumDescriptor core_ml__specification__reduce_layer_params__reduce_operation__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceLayerParams.ReduceOperation",
  "ReduceOperation",
  "CoreML__Specification__ReduceLayerParams__ReduceOperation",
  "CoreML.Specification",
  10,
  core_ml__specification__reduce_layer_params__reduce_operation__enum_values_by_number,
  10,
  core_ml__specification__reduce_layer_params__reduce_operation__enum_values_by_name,
  1,
  core_ml__specification__reduce_layer_params__reduce_operation__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCEnumValue core_ml__specification__reduce_layer_params__reduce_axis__enum_values_by_number[5] =
{
  { "CHW", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_AXIS__CHW", 0 },
  { "HW", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_AXIS__HW", 1 },
  { "C", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_AXIS__C", 2 },
  { "H", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_AXIS__H", 3 },
  { "W", "CORE_ML__SPECIFICATION__REDUCE_LAYER_PARAMS__REDUCE_AXIS__W", 4 },
};
static const ProtobufCIntRange core_ml__specification__reduce_layer_params__reduce_axis__value_ranges[] = {
{0, 0},{0, 5}
};
static const ProtobufCEnumValueIndex core_ml__specification__reduce_layer_params__reduce_axis__enum_values_by_name[5] =
{
  { "C", 2 },
  { "CHW", 0 },
  { "H", 3 },
  { "HW", 1 },
  { "W", 4 },
};
const ProtobufCEnumDescriptor core_ml__specification__reduce_layer_params__reduce_axis__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceLayerParams.ReduceAxis",
  "ReduceAxis",
  "CoreML__Specification__ReduceLayerParams__ReduceAxis",
  "CoreML.Specification",
  5,
  core_ml__specification__reduce_layer_params__reduce_axis__enum_values_by_number,
  5,
  core_ml__specification__reduce_layer_params__reduce_axis__enum_values_by_name,
  1,
  core_ml__specification__reduce_layer_params__reduce_axis__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_layer_params__field_descriptors[3] =
{
  {
    "mode",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceLayerParams, mode),
    &core_ml__specification__reduce_layer_params__reduce_operation__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "epsilon",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceLayerParams, epsilon),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "axis",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceLayerParams, axis),
    &core_ml__specification__reduce_layer_params__reduce_axis__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_layer_params__field_indices_by_name[] = {
  2,   /* field[2] = axis */
  1,   /* field[1] = epsilon */
  0,   /* field[0] = mode */
};
static const ProtobufCIntRange core_ml__specification__reduce_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceLayerParams",
  "ReduceLayerParams",
  "CoreML__Specification__ReduceLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceLayerParams),
  3,
  core_ml__specification__reduce_layer_params__field_descriptors,
  core_ml__specification__reduce_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__crop_layer_params__field_descriptors[2] =
{
  {
    "cropAmounts",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CropLayerParams, cropamounts),
    &core_ml__specification__border_amounts__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "offset",
    5,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__CropLayerParams, n_offset),
    offsetof(CoreML__Specification__CropLayerParams, offset),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__crop_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = cropAmounts */
  1,   /* field[1] = offset */
};
static const ProtobufCIntRange core_ml__specification__crop_layer_params__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 5, 1 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__crop_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CropLayerParams",
  "CropLayerParams",
  "CoreML__Specification__CropLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CropLayerParams),
  2,
  core_ml__specification__crop_layer_params__field_descriptors,
  core_ml__specification__crop_layer_params__field_indices_by_name,
  2,  core_ml__specification__crop_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__crop_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__average_layer_params__field_descriptors NULL
#define core_ml__specification__average_layer_params__field_indices_by_name NULL
#define core_ml__specification__average_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__average_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AverageLayerParams",
  "AverageLayerParams",
  "CoreML__Specification__AverageLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AverageLayerParams),
  0,
  core_ml__specification__average_layer_params__field_descriptors,
  core_ml__specification__average_layer_params__field_indices_by_name,
  0,  core_ml__specification__average_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__average_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__max_layer_params__field_descriptors NULL
#define core_ml__specification__max_layer_params__field_indices_by_name NULL
#define core_ml__specification__max_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__max_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MaxLayerParams",
  "MaxLayerParams",
  "CoreML__Specification__MaxLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MaxLayerParams),
  0,
  core_ml__specification__max_layer_params__field_descriptors,
  core_ml__specification__max_layer_params__field_indices_by_name,
  0,  core_ml__specification__max_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__max_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__min_layer_params__field_descriptors NULL
#define core_ml__specification__min_layer_params__field_indices_by_name NULL
#define core_ml__specification__min_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__min_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MinLayerParams",
  "MinLayerParams",
  "CoreML__Specification__MinLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MinLayerParams),
  0,
  core_ml__specification__min_layer_params__field_descriptors,
  core_ml__specification__min_layer_params__field_indices_by_name,
  0,  core_ml__specification__min_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__min_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__dot_product_layer_params__field_descriptors[1] =
{
  {
    "cosineSimilarity",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__DotProductLayerParams, cosinesimilarity),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__dot_product_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = cosineSimilarity */
};
static const ProtobufCIntRange core_ml__specification__dot_product_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__dot_product_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.DotProductLayerParams",
  "DotProductLayerParams",
  "CoreML__Specification__DotProductLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__DotProductLayerParams),
  1,
  core_ml__specification__dot_product_layer_params__field_descriptors,
  core_ml__specification__dot_product_layer_params__field_indices_by_name,
  1,  core_ml__specification__dot_product_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__dot_product_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__mean_variance_normalize_layer_params__field_descriptors[3] =
{
  {
    "acrossChannels",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MeanVarianceNormalizeLayerParams, acrosschannels),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "normalizeVariance",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MeanVarianceNormalizeLayerParams, normalizevariance),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "epsilon",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MeanVarianceNormalizeLayerParams, epsilon),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__mean_variance_normalize_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = acrossChannels */
  2,   /* field[2] = epsilon */
  1,   /* field[1] = normalizeVariance */
};
static const ProtobufCIntRange core_ml__specification__mean_variance_normalize_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__mean_variance_normalize_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MeanVarianceNormalizeLayerParams",
  "MeanVarianceNormalizeLayerParams",
  "CoreML__Specification__MeanVarianceNormalizeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MeanVarianceNormalizeLayerParams),
  3,
  core_ml__specification__mean_variance_normalize_layer_params__field_descriptors,
  core_ml__specification__mean_variance_normalize_layer_params__field_indices_by_name,
  1,  core_ml__specification__mean_variance_normalize_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__mean_variance_normalize_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__sequence_repeat_layer_params__field_descriptors[1] =
{
  {
    "nRepetitions",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SequenceRepeatLayerParams, nrepetitions),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__sequence_repeat_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = nRepetitions */
};
static const ProtobufCIntRange core_ml__specification__sequence_repeat_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__sequence_repeat_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SequenceRepeatLayerParams",
  "SequenceRepeatLayerParams",
  "CoreML__Specification__SequenceRepeatLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SequenceRepeatLayerParams),
  1,
  core_ml__specification__sequence_repeat_layer_params__field_descriptors,
  core_ml__specification__sequence_repeat_layer_params__field_indices_by_name,
  1,  core_ml__specification__sequence_repeat_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__sequence_repeat_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__simple_recurrent_layer_params__field_descriptors[9] =
{
  {
    "inputVectorSize",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, inputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputVectorSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, outputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "activation",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, activation),
    &core_ml__specification__activation_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sequenceOutput",
    15,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, sequenceoutput),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBiasVector",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, hasbiasvector),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weightMatrix",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, weightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "recursionMatrix",
    31,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, recursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "biasVector",
    32,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, biasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reverseInput",
    100,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SimpleRecurrentLayerParams, reverseinput),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__simple_recurrent_layer_params__field_indices_by_name[] = {
  2,   /* field[2] = activation */
  7,   /* field[7] = biasVector */
  4,   /* field[4] = hasBiasVector */
  0,   /* field[0] = inputVectorSize */
  1,   /* field[1] = outputVectorSize */
  6,   /* field[6] = recursionMatrix */
  8,   /* field[8] = reverseInput */
  3,   /* field[3] = sequenceOutput */
  5,   /* field[5] = weightMatrix */
};
static const ProtobufCIntRange core_ml__specification__simple_recurrent_layer_params__number_ranges[6 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 15, 3 },
  { 20, 4 },
  { 30, 5 },
  { 100, 8 },
  { 0, 9 }
};
const ProtobufCMessageDescriptor core_ml__specification__simple_recurrent_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SimpleRecurrentLayerParams",
  "SimpleRecurrentLayerParams",
  "CoreML__Specification__SimpleRecurrentLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SimpleRecurrentLayerParams),
  9,
  core_ml__specification__simple_recurrent_layer_params__field_descriptors,
  core_ml__specification__simple_recurrent_layer_params__field_indices_by_name,
  6,  core_ml__specification__simple_recurrent_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__simple_recurrent_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__grulayer_params__field_descriptors[15] =
{
  {
    "inputVectorSize",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, inputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputVectorSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, outputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "activations",
    10,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__GRULayerParams, n_activations),
    offsetof(CoreML__Specification__GRULayerParams, activations),
    &core_ml__specification__activation_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sequenceOutput",
    15,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, sequenceoutput),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBiasVectors",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, hasbiasvectors),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "updateGateWeightMatrix",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, updategateweightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "resetGateWeightMatrix",
    31,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, resetgateweightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputGateWeightMatrix",
    32,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, outputgateweightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "updateGateRecursionMatrix",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, updategaterecursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "resetGateRecursionMatrix",
    51,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, resetgaterecursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputGateRecursionMatrix",
    52,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, outputgaterecursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "updateGateBiasVector",
    70,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, updategatebiasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "resetGateBiasVector",
    71,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, resetgatebiasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputGateBiasVector",
    72,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, outputgatebiasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reverseInput",
    100,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GRULayerParams, reverseinput),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__grulayer_params__field_indices_by_name[] = {
  2,   /* field[2] = activations */
  4,   /* field[4] = hasBiasVectors */
  0,   /* field[0] = inputVectorSize */
  13,   /* field[13] = outputGateBiasVector */
  10,   /* field[10] = outputGateRecursionMatrix */
  7,   /* field[7] = outputGateWeightMatrix */
  1,   /* field[1] = outputVectorSize */
  12,   /* field[12] = resetGateBiasVector */
  9,   /* field[9] = resetGateRecursionMatrix */
  6,   /* field[6] = resetGateWeightMatrix */
  14,   /* field[14] = reverseInput */
  3,   /* field[3] = sequenceOutput */
  11,   /* field[11] = updateGateBiasVector */
  8,   /* field[8] = updateGateRecursionMatrix */
  5,   /* field[5] = updateGateWeightMatrix */
};
static const ProtobufCIntRange core_ml__specification__grulayer_params__number_ranges[8 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 15, 3 },
  { 20, 4 },
  { 30, 5 },
  { 50, 8 },
  { 70, 11 },
  { 100, 14 },
  { 0, 15 }
};
const ProtobufCMessageDescriptor core_ml__specification__grulayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GRULayerParams",
  "GRULayerParams",
  "CoreML__Specification__GRULayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GRULayerParams),
  15,
  core_ml__specification__grulayer_params__field_descriptors,
  core_ml__specification__grulayer_params__field_indices_by_name,
  8,  core_ml__specification__grulayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__grulayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__lstmparams__field_descriptors[6] =
{
  {
    "sequenceOutput",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMParams, sequenceoutput),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBiasVectors",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMParams, hasbiasvectors),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "forgetBias",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMParams, forgetbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasPeepholeVectors",
    40,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMParams, haspeepholevectors),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "coupledInputAndForgetGate",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMParams, coupledinputandforgetgate),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "cellClipThreshold",
    60,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMParams, cellclipthreshold),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__lstmparams__field_indices_by_name[] = {
  5,   /* field[5] = cellClipThreshold */
  4,   /* field[4] = coupledInputAndForgetGate */
  2,   /* field[2] = forgetBias */
  1,   /* field[1] = hasBiasVectors */
  3,   /* field[3] = hasPeepholeVectors */
  0,   /* field[0] = sequenceOutput */
};
static const ProtobufCIntRange core_ml__specification__lstmparams__number_ranges[6 + 1] =
{
  { 10, 0 },
  { 20, 1 },
  { 30, 2 },
  { 40, 3 },
  { 50, 4 },
  { 60, 5 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor core_ml__specification__lstmparams__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LSTMParams",
  "LSTMParams",
  "CoreML__Specification__LSTMParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LSTMParams),
  6,
  core_ml__specification__lstmparams__field_descriptors,
  core_ml__specification__lstmparams__field_indices_by_name,
  6,  core_ml__specification__lstmparams__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__lstmparams__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__lstmweight_params__field_descriptors[15] =
{
  {
    "inputGateWeightMatrix",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, inputgateweightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "forgetGateWeightMatrix",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, forgetgateweightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "blockInputWeightMatrix",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, blockinputweightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputGateWeightMatrix",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, outputgateweightmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "inputGateRecursionMatrix",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, inputgaterecursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "forgetGateRecursionMatrix",
    21,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, forgetgaterecursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "blockInputRecursionMatrix",
    22,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, blockinputrecursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputGateRecursionMatrix",
    23,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, outputgaterecursionmatrix),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "inputGateBiasVector",
    40,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, inputgatebiasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "forgetGateBiasVector",
    41,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, forgetgatebiasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "blockInputBiasVector",
    42,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, blockinputbiasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputGateBiasVector",
    43,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, outputgatebiasvector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "inputGatePeepholeVector",
    60,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, inputgatepeepholevector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "forgetGatePeepholeVector",
    61,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, forgetgatepeepholevector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputGatePeepholeVector",
    62,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LSTMWeightParams, outputgatepeepholevector),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__lstmweight_params__field_indices_by_name[] = {
  10,   /* field[10] = blockInputBiasVector */
  6,   /* field[6] = blockInputRecursionMatrix */
  2,   /* field[2] = blockInputWeightMatrix */
  9,   /* field[9] = forgetGateBiasVector */
  13,   /* field[13] = forgetGatePeepholeVector */
  5,   /* field[5] = forgetGateRecursionMatrix */
  1,   /* field[1] = forgetGateWeightMatrix */
  8,   /* field[8] = inputGateBiasVector */
  12,   /* field[12] = inputGatePeepholeVector */
  4,   /* field[4] = inputGateRecursionMatrix */
  0,   /* field[0] = inputGateWeightMatrix */
  11,   /* field[11] = outputGateBiasVector */
  14,   /* field[14] = outputGatePeepholeVector */
  7,   /* field[7] = outputGateRecursionMatrix */
  3,   /* field[3] = outputGateWeightMatrix */
};
static const ProtobufCIntRange core_ml__specification__lstmweight_params__number_ranges[4 + 1] =
{
  { 1, 0 },
  { 20, 4 },
  { 40, 8 },
  { 60, 12 },
  { 0, 15 }
};
const ProtobufCMessageDescriptor core_ml__specification__lstmweight_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LSTMWeightParams",
  "LSTMWeightParams",
  "CoreML__Specification__LSTMWeightParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LSTMWeightParams),
  15,
  core_ml__specification__lstmweight_params__field_descriptors,
  core_ml__specification__lstmweight_params__field_indices_by_name,
  4,  core_ml__specification__lstmweight_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__lstmweight_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__uni_directional_lstmlayer_params__field_descriptors[6] =
{
  {
    "inputVectorSize",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UniDirectionalLSTMLayerParams, inputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputVectorSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UniDirectionalLSTMLayerParams, outputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "activations",
    10,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__UniDirectionalLSTMLayerParams, n_activations),
    offsetof(CoreML__Specification__UniDirectionalLSTMLayerParams, activations),
    &core_ml__specification__activation_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "params",
    15,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UniDirectionalLSTMLayerParams, params),
    &core_ml__specification__lstmparams__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weightParams",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UniDirectionalLSTMLayerParams, weightparams),
    &core_ml__specification__lstmweight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reverseInput",
    100,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UniDirectionalLSTMLayerParams, reverseinput),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__uni_directional_lstmlayer_params__field_indices_by_name[] = {
  2,   /* field[2] = activations */
  0,   /* field[0] = inputVectorSize */
  1,   /* field[1] = outputVectorSize */
  3,   /* field[3] = params */
  5,   /* field[5] = reverseInput */
  4,   /* field[4] = weightParams */
};
static const ProtobufCIntRange core_ml__specification__uni_directional_lstmlayer_params__number_ranges[5 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 15, 3 },
  { 20, 4 },
  { 100, 5 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor core_ml__specification__uni_directional_lstmlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.UniDirectionalLSTMLayerParams",
  "UniDirectionalLSTMLayerParams",
  "CoreML__Specification__UniDirectionalLSTMLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__UniDirectionalLSTMLayerParams),
  6,
  core_ml__specification__uni_directional_lstmlayer_params__field_descriptors,
  core_ml__specification__uni_directional_lstmlayer_params__field_indices_by_name,
  5,  core_ml__specification__uni_directional_lstmlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__uni_directional_lstmlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__bi_directional_lstmlayer_params__field_descriptors[6] =
{
  {
    "inputVectorSize",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, inputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputVectorSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, outputvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "activationsForwardLSTM",
    10,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, n_activationsforwardlstm),
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, activationsforwardlstm),
    &core_ml__specification__activation_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "activationsBackwardLSTM",
    11,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, n_activationsbackwardlstm),
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, activationsbackwardlstm),
    &core_ml__specification__activation_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "params",
    15,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, params),
    &core_ml__specification__lstmparams__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weightParams",
    20,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, n_weightparams),
    offsetof(CoreML__Specification__BiDirectionalLSTMLayerParams, weightparams),
    &core_ml__specification__lstmweight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__bi_directional_lstmlayer_params__field_indices_by_name[] = {
  3,   /* field[3] = activationsBackwardLSTM */
  2,   /* field[2] = activationsForwardLSTM */
  0,   /* field[0] = inputVectorSize */
  1,   /* field[1] = outputVectorSize */
  4,   /* field[4] = params */
  5,   /* field[5] = weightParams */
};
static const ProtobufCIntRange core_ml__specification__bi_directional_lstmlayer_params__number_ranges[4 + 1] =
{
  { 1, 0 },
  { 10, 2 },
  { 15, 4 },
  { 20, 5 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor core_ml__specification__bi_directional_lstmlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BiDirectionalLSTMLayerParams",
  "BiDirectionalLSTMLayerParams",
  "CoreML__Specification__BiDirectionalLSTMLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BiDirectionalLSTMLayerParams),
  6,
  core_ml__specification__bi_directional_lstmlayer_params__field_descriptors,
  core_ml__specification__bi_directional_lstmlayer_params__field_indices_by_name,
  4,  core_ml__specification__bi_directional_lstmlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__bi_directional_lstmlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__custom_layer_params__custom_layer_param_value__field_descriptors[5] =
{
  {
    "doubleValue",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_DOUBLE,
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, value_case),
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, doublevalue),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stringValue",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, value_case),
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, stringvalue),
    NULL,
    &protobuf_c_empty_string,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "intValue",
    30,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, value_case),
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, intvalue),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "longValue",
    40,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, value_case),
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, longvalue),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "boolValue",
    50,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, value_case),
    offsetof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue, boolvalue),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__custom_layer_params__custom_layer_param_value__field_indices_by_name[] = {
  4,   /* field[4] = boolValue */
  0,   /* field[0] = doubleValue */
  2,   /* field[2] = intValue */
  3,   /* field[3] = longValue */
  1,   /* field[1] = stringValue */
};
static const ProtobufCIntRange core_ml__specification__custom_layer_params__custom_layer_param_value__number_ranges[5 + 1] =
{
  { 10, 0 },
  { 20, 1 },
  { 30, 2 },
  { 40, 3 },
  { 50, 4 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__custom_layer_params__custom_layer_param_value__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CustomLayerParams.CustomLayerParamValue",
  "CustomLayerParamValue",
  "CoreML__Specification__CustomLayerParams__CustomLayerParamValue",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CustomLayerParams__CustomLayerParamValue),
  5,
  core_ml__specification__custom_layer_params__custom_layer_param_value__field_descriptors,
  core_ml__specification__custom_layer_params__custom_layer_param_value__field_indices_by_name,
  5,  core_ml__specification__custom_layer_params__custom_layer_param_value__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__custom_layer_params__custom_layer_param_value__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__custom_layer_params__parameters_entry__field_descriptors[2] =
{
  {
    "key",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CustomLayerParams__ParametersEntry, key),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "value",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CustomLayerParams__ParametersEntry, value),
    &core_ml__specification__custom_layer_params__custom_layer_param_value__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__custom_layer_params__parameters_entry__field_indices_by_name[] = {
  0,   /* field[0] = key */
  1,   /* field[1] = value */
};
static const ProtobufCIntRange core_ml__specification__custom_layer_params__parameters_entry__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__custom_layer_params__parameters_entry__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CustomLayerParams.ParametersEntry",
  "ParametersEntry",
  "CoreML__Specification__CustomLayerParams__ParametersEntry",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CustomLayerParams__ParametersEntry),
  2,
  core_ml__specification__custom_layer_params__parameters_entry__field_descriptors,
  core_ml__specification__custom_layer_params__parameters_entry__field_indices_by_name,
  1,  core_ml__specification__custom_layer_params__parameters_entry__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__custom_layer_params__parameters_entry__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__custom_layer_params__field_descriptors[4] =
{
  {
    "className",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CustomLayerParams, classname),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weights",
    20,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__CustomLayerParams, n_weights),
    offsetof(CoreML__Specification__CustomLayerParams, weights),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "parameters",
    30,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__CustomLayerParams, n_parameters),
    offsetof(CoreML__Specification__CustomLayerParams, parameters),
    &core_ml__specification__custom_layer_params__parameters_entry__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "description",
    40,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CustomLayerParams, description),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__custom_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = className */
  3,   /* field[3] = description */
  2,   /* field[2] = parameters */
  1,   /* field[1] = weights */
};
static const ProtobufCIntRange core_ml__specification__custom_layer_params__number_ranges[4 + 1] =
{
  { 10, 0 },
  { 20, 1 },
  { 30, 2 },
  { 40, 3 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__custom_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CustomLayerParams",
  "CustomLayerParams",
  "CoreML__Specification__CustomLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CustomLayerParams),
  4,
  core_ml__specification__custom_layer_params__field_descriptors,
  core_ml__specification__custom_layer_params__field_indices_by_name,
  4,  core_ml__specification__custom_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__custom_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__transpose_layer_params__field_descriptors[1] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__TransposeLayerParams, n_axes),
    offsetof(CoreML__Specification__TransposeLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__transpose_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
};
static const ProtobufCIntRange core_ml__specification__transpose_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__transpose_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.TransposeLayerParams",
  "TransposeLayerParams",
  "CoreML__Specification__TransposeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__TransposeLayerParams),
  1,
  core_ml__specification__transpose_layer_params__field_descriptors,
  core_ml__specification__transpose_layer_params__field_indices_by_name,
  1,  core_ml__specification__transpose_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__transpose_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__batched_mat_mul_layer_params__field_descriptors[8] =
{
  {
    "transposeA",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, transposea),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "transposeB",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, transposeb),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weightMatrixFirstDimension",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, weightmatrixfirstdimension),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weightMatrixSecondDimension",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, weightmatrixseconddimension),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hasBias",
    7,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, hasbias),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "weights",
    8,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, weights),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "bias",
    9,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, bias),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "int8DynamicQuantize",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__BatchedMatMulLayerParams, int8dynamicquantize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__batched_mat_mul_layer_params__field_indices_by_name[] = {
  6,   /* field[6] = bias */
  4,   /* field[4] = hasBias */
  7,   /* field[7] = int8DynamicQuantize */
  0,   /* field[0] = transposeA */
  1,   /* field[1] = transposeB */
  2,   /* field[2] = weightMatrixFirstDimension */
  3,   /* field[3] = weightMatrixSecondDimension */
  5,   /* field[5] = weights */
};
static const ProtobufCIntRange core_ml__specification__batched_mat_mul_layer_params__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 5, 2 },
  { 0, 8 }
};
const ProtobufCMessageDescriptor core_ml__specification__batched_mat_mul_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BatchedMatMulLayerParams",
  "BatchedMatMulLayerParams",
  "CoreML__Specification__BatchedMatMulLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BatchedMatMulLayerParams),
  8,
  core_ml__specification__batched_mat_mul_layer_params__field_descriptors,
  core_ml__specification__batched_mat_mul_layer_params__field_indices_by_name,
  2,  core_ml__specification__batched_mat_mul_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__batched_mat_mul_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__concat_ndlayer_params__field_descriptors[2] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConcatNDLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "interleave",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConcatNDLayerParams, interleave),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__concat_ndlayer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = interleave */
};
static const ProtobufCIntRange core_ml__specification__concat_ndlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__concat_ndlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ConcatNDLayerParams",
  "ConcatNDLayerParams",
  "CoreML__Specification__ConcatNDLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ConcatNDLayerParams),
  2,
  core_ml__specification__concat_ndlayer_params__field_descriptors,
  core_ml__specification__concat_ndlayer_params__field_indices_by_name,
  1,  core_ml__specification__concat_ndlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__concat_ndlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__softmax_ndlayer_params__field_descriptors[1] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SoftmaxNDLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__softmax_ndlayer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
};
static const ProtobufCIntRange core_ml__specification__softmax_ndlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__softmax_ndlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SoftmaxNDLayerParams",
  "SoftmaxNDLayerParams",
  "CoreML__Specification__SoftmaxNDLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SoftmaxNDLayerParams),
  1,
  core_ml__specification__softmax_ndlayer_params__field_descriptors,
  core_ml__specification__softmax_ndlayer_params__field_indices_by_name,
  1,  core_ml__specification__softmax_ndlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__softmax_ndlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reverse_layer_params__field_descriptors[1] =
{
  {
    "reverseDim",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__ReverseLayerParams, n_reversedim),
    offsetof(CoreML__Specification__ReverseLayerParams, reversedim),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reverse_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = reverseDim */
};
static const ProtobufCIntRange core_ml__specification__reverse_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__reverse_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReverseLayerParams",
  "ReverseLayerParams",
  "CoreML__Specification__ReverseLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReverseLayerParams),
  1,
  core_ml__specification__reverse_layer_params__field_descriptors,
  core_ml__specification__reverse_layer_params__field_indices_by_name,
  1,  core_ml__specification__reverse_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reverse_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reverse_seq_layer_params__field_descriptors[2] =
{
  {
    "batchAxis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReverseSeqLayerParams, batchaxis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "sequenceAxis",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReverseSeqLayerParams, sequenceaxis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reverse_seq_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = batchAxis */
  1,   /* field[1] = sequenceAxis */
};
static const ProtobufCIntRange core_ml__specification__reverse_seq_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__reverse_seq_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReverseSeqLayerParams",
  "ReverseSeqLayerParams",
  "CoreML__Specification__ReverseSeqLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReverseSeqLayerParams),
  2,
  core_ml__specification__reverse_seq_layer_params__field_descriptors,
  core_ml__specification__reverse_seq_layer_params__field_indices_by_name,
  1,  core_ml__specification__reverse_seq_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reverse_seq_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__load_constant_ndlayer_params__field_descriptors[2] =
{
  {
    "shape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__LoadConstantNDLayerParams, n_shape),
    offsetof(CoreML__Specification__LoadConstantNDLayerParams, shape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "data",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LoadConstantNDLayerParams, data),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__load_constant_ndlayer_params__field_indices_by_name[] = {
  1,   /* field[1] = data */
  0,   /* field[0] = shape */
};
static const ProtobufCIntRange core_ml__specification__load_constant_ndlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__load_constant_ndlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LoadConstantNDLayerParams",
  "LoadConstantNDLayerParams",
  "CoreML__Specification__LoadConstantNDLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LoadConstantNDLayerParams),
  2,
  core_ml__specification__load_constant_ndlayer_params__field_descriptors,
  core_ml__specification__load_constant_ndlayer_params__field_indices_by_name,
  1,  core_ml__specification__load_constant_ndlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__load_constant_ndlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__fill_like_layer_params__field_descriptors[1] =
{
  {
    "value",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__FillLikeLayerParams, value),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__fill_like_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = value */
};
static const ProtobufCIntRange core_ml__specification__fill_like_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__fill_like_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FillLikeLayerParams",
  "FillLikeLayerParams",
  "CoreML__Specification__FillLikeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__FillLikeLayerParams),
  1,
  core_ml__specification__fill_like_layer_params__field_descriptors,
  core_ml__specification__fill_like_layer_params__field_indices_by_name,
  1,  core_ml__specification__fill_like_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__fill_like_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__fill_static_layer_params__field_descriptors[2] =
{
  {
    "value",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__FillStaticLayerParams, value),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "targetShape",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__FillStaticLayerParams, n_targetshape),
    offsetof(CoreML__Specification__FillStaticLayerParams, targetshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__fill_static_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = targetShape */
  0,   /* field[0] = value */
};
static const ProtobufCIntRange core_ml__specification__fill_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__fill_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FillStaticLayerParams",
  "FillStaticLayerParams",
  "CoreML__Specification__FillStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__FillStaticLayerParams),
  2,
  core_ml__specification__fill_static_layer_params__field_descriptors,
  core_ml__specification__fill_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__fill_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__fill_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__fill_dynamic_layer_params__field_descriptors[1] =
{
  {
    "value",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__FillDynamicLayerParams, value),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__fill_dynamic_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = value */
};
static const ProtobufCIntRange core_ml__specification__fill_dynamic_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__fill_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FillDynamicLayerParams",
  "FillDynamicLayerParams",
  "CoreML__Specification__FillDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__FillDynamicLayerParams),
  1,
  core_ml__specification__fill_dynamic_layer_params__field_descriptors,
  core_ml__specification__fill_dynamic_layer_params__field_indices_by_name,
  1,  core_ml__specification__fill_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__fill_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__where_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__where_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__where_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__where_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.WhereBroadcastableLayerParams",
  "WhereBroadcastableLayerParams",
  "CoreML__Specification__WhereBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__WhereBroadcastableLayerParams),
  0,
  core_ml__specification__where_broadcastable_layer_params__field_descriptors,
  core_ml__specification__where_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__where_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__where_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__sin_layer_params__field_descriptors NULL
#define core_ml__specification__sin_layer_params__field_indices_by_name NULL
#define core_ml__specification__sin_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__sin_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SinLayerParams",
  "SinLayerParams",
  "CoreML__Specification__SinLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SinLayerParams),
  0,
  core_ml__specification__sin_layer_params__field_descriptors,
  core_ml__specification__sin_layer_params__field_indices_by_name,
  0,  core_ml__specification__sin_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__sin_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__cos_layer_params__field_descriptors NULL
#define core_ml__specification__cos_layer_params__field_indices_by_name NULL
#define core_ml__specification__cos_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__cos_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CosLayerParams",
  "CosLayerParams",
  "CoreML__Specification__CosLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CosLayerParams),
  0,
  core_ml__specification__cos_layer_params__field_descriptors,
  core_ml__specification__cos_layer_params__field_indices_by_name,
  0,  core_ml__specification__cos_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__cos_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__tan_layer_params__field_descriptors NULL
#define core_ml__specification__tan_layer_params__field_indices_by_name NULL
#define core_ml__specification__tan_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__tan_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.TanLayerParams",
  "TanLayerParams",
  "CoreML__Specification__TanLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__TanLayerParams),
  0,
  core_ml__specification__tan_layer_params__field_descriptors,
  core_ml__specification__tan_layer_params__field_indices_by_name,
  0,  core_ml__specification__tan_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__tan_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__asin_layer_params__field_descriptors NULL
#define core_ml__specification__asin_layer_params__field_indices_by_name NULL
#define core_ml__specification__asin_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__asin_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AsinLayerParams",
  "AsinLayerParams",
  "CoreML__Specification__AsinLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AsinLayerParams),
  0,
  core_ml__specification__asin_layer_params__field_descriptors,
  core_ml__specification__asin_layer_params__field_indices_by_name,
  0,  core_ml__specification__asin_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__asin_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__acos_layer_params__field_descriptors NULL
#define core_ml__specification__acos_layer_params__field_indices_by_name NULL
#define core_ml__specification__acos_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__acos_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AcosLayerParams",
  "AcosLayerParams",
  "CoreML__Specification__AcosLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AcosLayerParams),
  0,
  core_ml__specification__acos_layer_params__field_descriptors,
  core_ml__specification__acos_layer_params__field_indices_by_name,
  0,  core_ml__specification__acos_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__acos_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__atan_layer_params__field_descriptors NULL
#define core_ml__specification__atan_layer_params__field_indices_by_name NULL
#define core_ml__specification__atan_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__atan_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AtanLayerParams",
  "AtanLayerParams",
  "CoreML__Specification__AtanLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AtanLayerParams),
  0,
  core_ml__specification__atan_layer_params__field_descriptors,
  core_ml__specification__atan_layer_params__field_indices_by_name,
  0,  core_ml__specification__atan_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__atan_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__sinh_layer_params__field_descriptors NULL
#define core_ml__specification__sinh_layer_params__field_indices_by_name NULL
#define core_ml__specification__sinh_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__sinh_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SinhLayerParams",
  "SinhLayerParams",
  "CoreML__Specification__SinhLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SinhLayerParams),
  0,
  core_ml__specification__sinh_layer_params__field_descriptors,
  core_ml__specification__sinh_layer_params__field_indices_by_name,
  0,  core_ml__specification__sinh_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__sinh_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__cosh_layer_params__field_descriptors NULL
#define core_ml__specification__cosh_layer_params__field_indices_by_name NULL
#define core_ml__specification__cosh_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__cosh_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CoshLayerParams",
  "CoshLayerParams",
  "CoreML__Specification__CoshLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CoshLayerParams),
  0,
  core_ml__specification__cosh_layer_params__field_descriptors,
  core_ml__specification__cosh_layer_params__field_indices_by_name,
  0,  core_ml__specification__cosh_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__cosh_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__tanh_layer_params__field_descriptors NULL
#define core_ml__specification__tanh_layer_params__field_indices_by_name NULL
#define core_ml__specification__tanh_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__tanh_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.TanhLayerParams",
  "TanhLayerParams",
  "CoreML__Specification__TanhLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__TanhLayerParams),
  0,
  core_ml__specification__tanh_layer_params__field_descriptors,
  core_ml__specification__tanh_layer_params__field_indices_by_name,
  0,  core_ml__specification__tanh_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__tanh_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__asinh_layer_params__field_descriptors NULL
#define core_ml__specification__asinh_layer_params__field_indices_by_name NULL
#define core_ml__specification__asinh_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__asinh_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AsinhLayerParams",
  "AsinhLayerParams",
  "CoreML__Specification__AsinhLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AsinhLayerParams),
  0,
  core_ml__specification__asinh_layer_params__field_descriptors,
  core_ml__specification__asinh_layer_params__field_indices_by_name,
  0,  core_ml__specification__asinh_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__asinh_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__acosh_layer_params__field_descriptors NULL
#define core_ml__specification__acosh_layer_params__field_indices_by_name NULL
#define core_ml__specification__acosh_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__acosh_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AcoshLayerParams",
  "AcoshLayerParams",
  "CoreML__Specification__AcoshLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AcoshLayerParams),
  0,
  core_ml__specification__acosh_layer_params__field_descriptors,
  core_ml__specification__acosh_layer_params__field_indices_by_name,
  0,  core_ml__specification__acosh_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__acosh_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__atanh_layer_params__field_descriptors NULL
#define core_ml__specification__atanh_layer_params__field_indices_by_name NULL
#define core_ml__specification__atanh_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__atanh_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AtanhLayerParams",
  "AtanhLayerParams",
  "CoreML__Specification__AtanhLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AtanhLayerParams),
  0,
  core_ml__specification__atanh_layer_params__field_descriptors,
  core_ml__specification__atanh_layer_params__field_indices_by_name,
  0,  core_ml__specification__atanh_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__atanh_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__pow_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__pow_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__pow_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__pow_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.PowBroadcastableLayerParams",
  "PowBroadcastableLayerParams",
  "CoreML__Specification__PowBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__PowBroadcastableLayerParams),
  0,
  core_ml__specification__pow_broadcastable_layer_params__field_descriptors,
  core_ml__specification__pow_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__pow_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__pow_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__exp2_layer_params__field_descriptors NULL
#define core_ml__specification__exp2_layer_params__field_indices_by_name NULL
#define core_ml__specification__exp2_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__exp2_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Exp2LayerParams",
  "Exp2LayerParams",
  "CoreML__Specification__Exp2LayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__Exp2LayerParams),
  0,
  core_ml__specification__exp2_layer_params__field_descriptors,
  core_ml__specification__exp2_layer_params__field_indices_by_name,
  0,  core_ml__specification__exp2_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__exp2_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__where_non_zero_layer_params__field_descriptors NULL
#define core_ml__specification__where_non_zero_layer_params__field_indices_by_name NULL
#define core_ml__specification__where_non_zero_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__where_non_zero_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.WhereNonZeroLayerParams",
  "WhereNonZeroLayerParams",
  "CoreML__Specification__WhereNonZeroLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__WhereNonZeroLayerParams),
  0,
  core_ml__specification__where_non_zero_layer_params__field_descriptors,
  core_ml__specification__where_non_zero_layer_params__field_indices_by_name,
  0,  core_ml__specification__where_non_zero_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__where_non_zero_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__matrix_band_part_layer_params__field_descriptors[2] =
{
  {
    "numLower",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MatrixBandPartLayerParams, numlower),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "numUpper",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MatrixBandPartLayerParams, numupper),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__matrix_band_part_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = numLower */
  1,   /* field[1] = numUpper */
};
static const ProtobufCIntRange core_ml__specification__matrix_band_part_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__matrix_band_part_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MatrixBandPartLayerParams",
  "MatrixBandPartLayerParams",
  "CoreML__Specification__MatrixBandPartLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MatrixBandPartLayerParams),
  2,
  core_ml__specification__matrix_band_part_layer_params__field_descriptors,
  core_ml__specification__matrix_band_part_layer_params__field_indices_by_name,
  1,  core_ml__specification__matrix_band_part_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__matrix_band_part_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__upper_triangular_layer_params__field_descriptors[1] =
{
  {
    "k",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__UpperTriangularLayerParams, k),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__upper_triangular_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = k */
};
static const ProtobufCIntRange core_ml__specification__upper_triangular_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__upper_triangular_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.UpperTriangularLayerParams",
  "UpperTriangularLayerParams",
  "CoreML__Specification__UpperTriangularLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__UpperTriangularLayerParams),
  1,
  core_ml__specification__upper_triangular_layer_params__field_descriptors,
  core_ml__specification__upper_triangular_layer_params__field_indices_by_name,
  1,  core_ml__specification__upper_triangular_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__upper_triangular_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__lower_triangular_layer_params__field_descriptors[1] =
{
  {
    "k",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LowerTriangularLayerParams, k),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__lower_triangular_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = k */
};
static const ProtobufCIntRange core_ml__specification__lower_triangular_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__lower_triangular_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LowerTriangularLayerParams",
  "LowerTriangularLayerParams",
  "CoreML__Specification__LowerTriangularLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LowerTriangularLayerParams),
  1,
  core_ml__specification__lower_triangular_layer_params__field_descriptors,
  core_ml__specification__lower_triangular_layer_params__field_indices_by_name,
  1,  core_ml__specification__lower_triangular_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__lower_triangular_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__broadcast_to_like_layer_params__field_descriptors NULL
#define core_ml__specification__broadcast_to_like_layer_params__field_indices_by_name NULL
#define core_ml__specification__broadcast_to_like_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__broadcast_to_like_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BroadcastToLikeLayerParams",
  "BroadcastToLikeLayerParams",
  "CoreML__Specification__BroadcastToLikeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BroadcastToLikeLayerParams),
  0,
  core_ml__specification__broadcast_to_like_layer_params__field_descriptors,
  core_ml__specification__broadcast_to_like_layer_params__field_indices_by_name,
  0,  core_ml__specification__broadcast_to_like_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__broadcast_to_like_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__broadcast_to_static_layer_params__field_descriptors[1] =
{
  {
    "targetShape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__BroadcastToStaticLayerParams, n_targetshape),
    offsetof(CoreML__Specification__BroadcastToStaticLayerParams, targetshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__broadcast_to_static_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = targetShape */
};
static const ProtobufCIntRange core_ml__specification__broadcast_to_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__broadcast_to_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BroadcastToStaticLayerParams",
  "BroadcastToStaticLayerParams",
  "CoreML__Specification__BroadcastToStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BroadcastToStaticLayerParams),
  1,
  core_ml__specification__broadcast_to_static_layer_params__field_descriptors,
  core_ml__specification__broadcast_to_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__broadcast_to_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__broadcast_to_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__broadcast_to_dynamic_layer_params__field_descriptors NULL
#define core_ml__specification__broadcast_to_dynamic_layer_params__field_indices_by_name NULL
#define core_ml__specification__broadcast_to_dynamic_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__broadcast_to_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.BroadcastToDynamicLayerParams",
  "BroadcastToDynamicLayerParams",
  "CoreML__Specification__BroadcastToDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__BroadcastToDynamicLayerParams),
  0,
  core_ml__specification__broadcast_to_dynamic_layer_params__field_descriptors,
  core_ml__specification__broadcast_to_dynamic_layer_params__field_indices_by_name,
  0,  core_ml__specification__broadcast_to_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__broadcast_to_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__add_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__add_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__add_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__add_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AddBroadcastableLayerParams",
  "AddBroadcastableLayerParams",
  "CoreML__Specification__AddBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AddBroadcastableLayerParams),
  0,
  core_ml__specification__add_broadcastable_layer_params__field_descriptors,
  core_ml__specification__add_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__add_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__add_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__max_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__max_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__max_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__max_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MaxBroadcastableLayerParams",
  "MaxBroadcastableLayerParams",
  "CoreML__Specification__MaxBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MaxBroadcastableLayerParams),
  0,
  core_ml__specification__max_broadcastable_layer_params__field_descriptors,
  core_ml__specification__max_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__max_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__max_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__min_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__min_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__min_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__min_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MinBroadcastableLayerParams",
  "MinBroadcastableLayerParams",
  "CoreML__Specification__MinBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MinBroadcastableLayerParams),
  0,
  core_ml__specification__min_broadcastable_layer_params__field_descriptors,
  core_ml__specification__min_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__min_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__min_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__mod_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__mod_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__mod_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__mod_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ModBroadcastableLayerParams",
  "ModBroadcastableLayerParams",
  "CoreML__Specification__ModBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ModBroadcastableLayerParams),
  0,
  core_ml__specification__mod_broadcastable_layer_params__field_descriptors,
  core_ml__specification__mod_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__mod_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__mod_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__floor_div_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__floor_div_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__floor_div_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__floor_div_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FloorDivBroadcastableLayerParams",
  "FloorDivBroadcastableLayerParams",
  "CoreML__Specification__FloorDivBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__FloorDivBroadcastableLayerParams),
  0,
  core_ml__specification__floor_div_broadcastable_layer_params__field_descriptors,
  core_ml__specification__floor_div_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__floor_div_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__floor_div_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__subtract_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__subtract_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__subtract_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__subtract_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SubtractBroadcastableLayerParams",
  "SubtractBroadcastableLayerParams",
  "CoreML__Specification__SubtractBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SubtractBroadcastableLayerParams),
  0,
  core_ml__specification__subtract_broadcastable_layer_params__field_descriptors,
  core_ml__specification__subtract_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__subtract_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__subtract_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__multiply_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__multiply_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__multiply_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__multiply_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MultiplyBroadcastableLayerParams",
  "MultiplyBroadcastableLayerParams",
  "CoreML__Specification__MultiplyBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MultiplyBroadcastableLayerParams),
  0,
  core_ml__specification__multiply_broadcastable_layer_params__field_descriptors,
  core_ml__specification__multiply_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__multiply_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__multiply_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__divide_broadcastable_layer_params__field_descriptors NULL
#define core_ml__specification__divide_broadcastable_layer_params__field_indices_by_name NULL
#define core_ml__specification__divide_broadcastable_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__divide_broadcastable_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.DivideBroadcastableLayerParams",
  "DivideBroadcastableLayerParams",
  "CoreML__Specification__DivideBroadcastableLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__DivideBroadcastableLayerParams),
  0,
  core_ml__specification__divide_broadcastable_layer_params__field_descriptors,
  core_ml__specification__divide_broadcastable_layer_params__field_indices_by_name,
  0,  core_ml__specification__divide_broadcastable_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__divide_broadcastable_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__gather_layer_params__field_descriptors[1] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GatherLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__gather_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
};
static const ProtobufCIntRange core_ml__specification__gather_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__gather_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GatherLayerParams",
  "GatherLayerParams",
  "CoreML__Specification__GatherLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GatherLayerParams),
  1,
  core_ml__specification__gather_layer_params__field_descriptors,
  core_ml__specification__gather_layer_params__field_indices_by_name,
  1,  core_ml__specification__gather_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__gather_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__scatter_layer_params__field_descriptors[2] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScatterLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mode",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScatterLayerParams, mode),
    &core_ml__specification__scatter_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__scatter_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = mode */
};
static const ProtobufCIntRange core_ml__specification__scatter_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__scatter_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ScatterLayerParams",
  "ScatterLayerParams",
  "CoreML__Specification__ScatterLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ScatterLayerParams),
  2,
  core_ml__specification__scatter_layer_params__field_descriptors,
  core_ml__specification__scatter_layer_params__field_indices_by_name,
  1,  core_ml__specification__scatter_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__scatter_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__gather_ndlayer_params__field_descriptors NULL
#define core_ml__specification__gather_ndlayer_params__field_indices_by_name NULL
#define core_ml__specification__gather_ndlayer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__gather_ndlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GatherNDLayerParams",
  "GatherNDLayerParams",
  "CoreML__Specification__GatherNDLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GatherNDLayerParams),
  0,
  core_ml__specification__gather_ndlayer_params__field_descriptors,
  core_ml__specification__gather_ndlayer_params__field_indices_by_name,
  0,  core_ml__specification__gather_ndlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__gather_ndlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__scatter_ndlayer_params__field_descriptors[1] =
{
  {
    "mode",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScatterNDLayerParams, mode),
    &core_ml__specification__scatter_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__scatter_ndlayer_params__field_indices_by_name[] = {
  0,   /* field[0] = mode */
};
static const ProtobufCIntRange core_ml__specification__scatter_ndlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__scatter_ndlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ScatterNDLayerParams",
  "ScatterNDLayerParams",
  "CoreML__Specification__ScatterNDLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ScatterNDLayerParams),
  1,
  core_ml__specification__scatter_ndlayer_params__field_descriptors,
  core_ml__specification__scatter_ndlayer_params__field_indices_by_name,
  1,  core_ml__specification__scatter_ndlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__scatter_ndlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__gather_along_axis_layer_params__field_descriptors[1] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GatherAlongAxisLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__gather_along_axis_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
};
static const ProtobufCIntRange core_ml__specification__gather_along_axis_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__gather_along_axis_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GatherAlongAxisLayerParams",
  "GatherAlongAxisLayerParams",
  "CoreML__Specification__GatherAlongAxisLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GatherAlongAxisLayerParams),
  1,
  core_ml__specification__gather_along_axis_layer_params__field_descriptors,
  core_ml__specification__gather_along_axis_layer_params__field_indices_by_name,
  1,  core_ml__specification__gather_along_axis_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__gather_along_axis_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__scatter_along_axis_layer_params__field_descriptors[2] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScatterAlongAxisLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mode",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ScatterAlongAxisLayerParams, mode),
    &core_ml__specification__scatter_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__scatter_along_axis_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = mode */
};
static const ProtobufCIntRange core_ml__specification__scatter_along_axis_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__scatter_along_axis_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ScatterAlongAxisLayerParams",
  "ScatterAlongAxisLayerParams",
  "CoreML__Specification__ScatterAlongAxisLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ScatterAlongAxisLayerParams),
  2,
  core_ml__specification__scatter_along_axis_layer_params__field_descriptors,
  core_ml__specification__scatter_along_axis_layer_params__field_indices_by_name,
  1,  core_ml__specification__scatter_along_axis_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__scatter_along_axis_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__stack_layer_params__field_descriptors[1] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__StackLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__stack_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
};
static const ProtobufCIntRange core_ml__specification__stack_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__stack_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.StackLayerParams",
  "StackLayerParams",
  "CoreML__Specification__StackLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__StackLayerParams),
  1,
  core_ml__specification__stack_layer_params__field_descriptors,
  core_ml__specification__stack_layer_params__field_indices_by_name,
  1,  core_ml__specification__stack_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__stack_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__rank_preserving_reshape_layer_params__field_descriptors[1] =
{
  {
    "targetShape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__RankPreservingReshapeLayerParams, n_targetshape),
    offsetof(CoreML__Specification__RankPreservingReshapeLayerParams, targetshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__rank_preserving_reshape_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = targetShape */
};
static const ProtobufCIntRange core_ml__specification__rank_preserving_reshape_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__rank_preserving_reshape_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RankPreservingReshapeLayerParams",
  "RankPreservingReshapeLayerParams",
  "CoreML__Specification__RankPreservingReshapeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RankPreservingReshapeLayerParams),
  1,
  core_ml__specification__rank_preserving_reshape_layer_params__field_descriptors,
  core_ml__specification__rank_preserving_reshape_layer_params__field_indices_by_name,
  1,  core_ml__specification__rank_preserving_reshape_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__rank_preserving_reshape_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__constant_padding_layer_params__field_descriptors[3] =
{
  {
    "value",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConstantPaddingLayerParams, value),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "padAmounts",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__ConstantPaddingLayerParams, n_padamounts),
    offsetof(CoreML__Specification__ConstantPaddingLayerParams, padamounts),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "padToGivenOutputSizeMode",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ConstantPaddingLayerParams, padtogivenoutputsizemode),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__constant_padding_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = padAmounts */
  2,   /* field[2] = padToGivenOutputSizeMode */
  0,   /* field[0] = value */
};
static const ProtobufCIntRange core_ml__specification__constant_padding_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__constant_padding_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ConstantPaddingLayerParams",
  "ConstantPaddingLayerParams",
  "CoreML__Specification__ConstantPaddingLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ConstantPaddingLayerParams),
  3,
  core_ml__specification__constant_padding_layer_params__field_descriptors,
  core_ml__specification__constant_padding_layer_params__field_indices_by_name,
  1,  core_ml__specification__constant_padding_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__constant_padding_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_normal_like_layer_params__field_descriptors[3] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalLikeLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mean",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalLikeLayerParams, mean),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stdDev",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalLikeLayerParams, stddev),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_normal_like_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = mean */
  0,   /* field[0] = seed */
  2,   /* field[2] = stdDev */
};
static const ProtobufCIntRange core_ml__specification__random_normal_like_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_normal_like_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomNormalLikeLayerParams",
  "RandomNormalLikeLayerParams",
  "CoreML__Specification__RandomNormalLikeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomNormalLikeLayerParams),
  3,
  core_ml__specification__random_normal_like_layer_params__field_descriptors,
  core_ml__specification__random_normal_like_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_normal_like_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_normal_like_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_normal_static_layer_params__field_descriptors[4] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalStaticLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mean",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalStaticLayerParams, mean),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stdDev",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalStaticLayerParams, stddev),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputShape",
    4,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__RandomNormalStaticLayerParams, n_outputshape),
    offsetof(CoreML__Specification__RandomNormalStaticLayerParams, outputshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_normal_static_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = mean */
  3,   /* field[3] = outputShape */
  0,   /* field[0] = seed */
  2,   /* field[2] = stdDev */
};
static const ProtobufCIntRange core_ml__specification__random_normal_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_normal_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomNormalStaticLayerParams",
  "RandomNormalStaticLayerParams",
  "CoreML__Specification__RandomNormalStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomNormalStaticLayerParams),
  4,
  core_ml__specification__random_normal_static_layer_params__field_descriptors,
  core_ml__specification__random_normal_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_normal_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_normal_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_normal_dynamic_layer_params__field_descriptors[3] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalDynamicLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mean",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalDynamicLayerParams, mean),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stdDev",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomNormalDynamicLayerParams, stddev),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_normal_dynamic_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = mean */
  0,   /* field[0] = seed */
  2,   /* field[2] = stdDev */
};
static const ProtobufCIntRange core_ml__specification__random_normal_dynamic_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_normal_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomNormalDynamicLayerParams",
  "RandomNormalDynamicLayerParams",
  "CoreML__Specification__RandomNormalDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomNormalDynamicLayerParams),
  3,
  core_ml__specification__random_normal_dynamic_layer_params__field_descriptors,
  core_ml__specification__random_normal_dynamic_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_normal_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_normal_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_uniform_like_layer_params__field_descriptors[3] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformLikeLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "minVal",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformLikeLayerParams, minval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "maxVal",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformLikeLayerParams, maxval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_uniform_like_layer_params__field_indices_by_name[] = {
  2,   /* field[2] = maxVal */
  1,   /* field[1] = minVal */
  0,   /* field[0] = seed */
};
static const ProtobufCIntRange core_ml__specification__random_uniform_like_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_uniform_like_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomUniformLikeLayerParams",
  "RandomUniformLikeLayerParams",
  "CoreML__Specification__RandomUniformLikeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomUniformLikeLayerParams),
  3,
  core_ml__specification__random_uniform_like_layer_params__field_descriptors,
  core_ml__specification__random_uniform_like_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_uniform_like_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_uniform_like_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_uniform_static_layer_params__field_descriptors[4] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformStaticLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "minVal",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformStaticLayerParams, minval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "maxVal",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformStaticLayerParams, maxval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputShape",
    4,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__RandomUniformStaticLayerParams, n_outputshape),
    offsetof(CoreML__Specification__RandomUniformStaticLayerParams, outputshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_uniform_static_layer_params__field_indices_by_name[] = {
  2,   /* field[2] = maxVal */
  1,   /* field[1] = minVal */
  3,   /* field[3] = outputShape */
  0,   /* field[0] = seed */
};
static const ProtobufCIntRange core_ml__specification__random_uniform_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_uniform_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomUniformStaticLayerParams",
  "RandomUniformStaticLayerParams",
  "CoreML__Specification__RandomUniformStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomUniformStaticLayerParams),
  4,
  core_ml__specification__random_uniform_static_layer_params__field_descriptors,
  core_ml__specification__random_uniform_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_uniform_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_uniform_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_uniform_dynamic_layer_params__field_descriptors[3] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformDynamicLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "minVal",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformDynamicLayerParams, minval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "maxVal",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomUniformDynamicLayerParams, maxval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_uniform_dynamic_layer_params__field_indices_by_name[] = {
  2,   /* field[2] = maxVal */
  1,   /* field[1] = minVal */
  0,   /* field[0] = seed */
};
static const ProtobufCIntRange core_ml__specification__random_uniform_dynamic_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_uniform_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomUniformDynamicLayerParams",
  "RandomUniformDynamicLayerParams",
  "CoreML__Specification__RandomUniformDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomUniformDynamicLayerParams),
  3,
  core_ml__specification__random_uniform_dynamic_layer_params__field_descriptors,
  core_ml__specification__random_uniform_dynamic_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_uniform_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_uniform_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_bernoulli_like_layer_params__field_descriptors[2] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomBernoulliLikeLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "prob",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomBernoulliLikeLayerParams, prob),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_bernoulli_like_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = prob */
  0,   /* field[0] = seed */
};
static const ProtobufCIntRange core_ml__specification__random_bernoulli_like_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_bernoulli_like_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomBernoulliLikeLayerParams",
  "RandomBernoulliLikeLayerParams",
  "CoreML__Specification__RandomBernoulliLikeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomBernoulliLikeLayerParams),
  2,
  core_ml__specification__random_bernoulli_like_layer_params__field_descriptors,
  core_ml__specification__random_bernoulli_like_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_bernoulli_like_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_bernoulli_like_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_bernoulli_static_layer_params__field_descriptors[3] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomBernoulliStaticLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "prob",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomBernoulliStaticLayerParams, prob),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "outputShape",
    3,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__RandomBernoulliStaticLayerParams, n_outputshape),
    offsetof(CoreML__Specification__RandomBernoulliStaticLayerParams, outputshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_bernoulli_static_layer_params__field_indices_by_name[] = {
  2,   /* field[2] = outputShape */
  1,   /* field[1] = prob */
  0,   /* field[0] = seed */
};
static const ProtobufCIntRange core_ml__specification__random_bernoulli_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_bernoulli_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomBernoulliStaticLayerParams",
  "RandomBernoulliStaticLayerParams",
  "CoreML__Specification__RandomBernoulliStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomBernoulliStaticLayerParams),
  3,
  core_ml__specification__random_bernoulli_static_layer_params__field_descriptors,
  core_ml__specification__random_bernoulli_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_bernoulli_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_bernoulli_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__random_bernoulli_dynamic_layer_params__field_descriptors[2] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomBernoulliDynamicLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "prob",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RandomBernoulliDynamicLayerParams, prob),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__random_bernoulli_dynamic_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = prob */
  0,   /* field[0] = seed */
};
static const ProtobufCIntRange core_ml__specification__random_bernoulli_dynamic_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__random_bernoulli_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RandomBernoulliDynamicLayerParams",
  "RandomBernoulliDynamicLayerParams",
  "CoreML__Specification__RandomBernoulliDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RandomBernoulliDynamicLayerParams),
  2,
  core_ml__specification__random_bernoulli_dynamic_layer_params__field_descriptors,
  core_ml__specification__random_bernoulli_dynamic_layer_params__field_indices_by_name,
  1,  core_ml__specification__random_bernoulli_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__random_bernoulli_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__categorical_distribution_layer_params__field_descriptors[5] =
{
  {
    "seed",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CategoricalDistributionLayerParams, seed),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "numSamples",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CategoricalDistributionLayerParams, numsamples),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "isLogits",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CategoricalDistributionLayerParams, islogits),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "eps",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CategoricalDistributionLayerParams, eps),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "temperature",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CategoricalDistributionLayerParams, temperature),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__categorical_distribution_layer_params__field_indices_by_name[] = {
  3,   /* field[3] = eps */
  2,   /* field[2] = isLogits */
  1,   /* field[1] = numSamples */
  0,   /* field[0] = seed */
  4,   /* field[4] = temperature */
};
static const ProtobufCIntRange core_ml__specification__categorical_distribution_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__categorical_distribution_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CategoricalDistributionLayerParams",
  "CategoricalDistributionLayerParams",
  "CoreML__Specification__CategoricalDistributionLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CategoricalDistributionLayerParams),
  5,
  core_ml__specification__categorical_distribution_layer_params__field_descriptors,
  core_ml__specification__categorical_distribution_layer_params__field_indices_by_name,
  1,  core_ml__specification__categorical_distribution_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__categorical_distribution_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_l1_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceL1LayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceL1LayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceL1LayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceL1LayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_l1_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_l1_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_l1_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceL1LayerParams",
  "ReduceL1LayerParams",
  "CoreML__Specification__ReduceL1LayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceL1LayerParams),
  3,
  core_ml__specification__reduce_l1_layer_params__field_descriptors,
  core_ml__specification__reduce_l1_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_l1_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_l1_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_l2_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceL2LayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceL2LayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceL2LayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceL2LayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_l2_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_l2_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_l2_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceL2LayerParams",
  "ReduceL2LayerParams",
  "CoreML__Specification__ReduceL2LayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceL2LayerParams),
  3,
  core_ml__specification__reduce_l2_layer_params__field_descriptors,
  core_ml__specification__reduce_l2_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_l2_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_l2_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_max_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceMaxLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceMaxLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceMaxLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceMaxLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_max_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_max_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_max_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceMaxLayerParams",
  "ReduceMaxLayerParams",
  "CoreML__Specification__ReduceMaxLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceMaxLayerParams),
  3,
  core_ml__specification__reduce_max_layer_params__field_descriptors,
  core_ml__specification__reduce_max_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_max_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_max_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_min_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceMinLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceMinLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceMinLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceMinLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_min_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_min_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_min_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceMinLayerParams",
  "ReduceMinLayerParams",
  "CoreML__Specification__ReduceMinLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceMinLayerParams),
  3,
  core_ml__specification__reduce_min_layer_params__field_descriptors,
  core_ml__specification__reduce_min_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_min_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_min_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_sum_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceSumLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceSumLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceSumLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceSumLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_sum_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_sum_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_sum_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceSumLayerParams",
  "ReduceSumLayerParams",
  "CoreML__Specification__ReduceSumLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceSumLayerParams),
  3,
  core_ml__specification__reduce_sum_layer_params__field_descriptors,
  core_ml__specification__reduce_sum_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_sum_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_sum_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_prod_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceProdLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceProdLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceProdLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceProdLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_prod_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_prod_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_prod_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceProdLayerParams",
  "ReduceProdLayerParams",
  "CoreML__Specification__ReduceProdLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceProdLayerParams),
  3,
  core_ml__specification__reduce_prod_layer_params__field_descriptors,
  core_ml__specification__reduce_prod_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_prod_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_prod_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_mean_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceMeanLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceMeanLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceMeanLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceMeanLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_mean_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_mean_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_mean_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceMeanLayerParams",
  "ReduceMeanLayerParams",
  "CoreML__Specification__ReduceMeanLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceMeanLayerParams),
  3,
  core_ml__specification__reduce_mean_layer_params__field_descriptors,
  core_ml__specification__reduce_mean_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_mean_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_mean_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_log_sum_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceLogSumLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceLogSumLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceLogSumLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceLogSumLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_log_sum_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_log_sum_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_log_sum_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceLogSumLayerParams",
  "ReduceLogSumLayerParams",
  "CoreML__Specification__ReduceLogSumLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceLogSumLayerParams),
  3,
  core_ml__specification__reduce_log_sum_layer_params__field_descriptors,
  core_ml__specification__reduce_log_sum_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_log_sum_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_log_sum_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_sum_square_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceSumSquareLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceSumSquareLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceSumSquareLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceSumSquareLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_sum_square_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_sum_square_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_sum_square_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceSumSquareLayerParams",
  "ReduceSumSquareLayerParams",
  "CoreML__Specification__ReduceSumSquareLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceSumSquareLayerParams),
  3,
  core_ml__specification__reduce_sum_square_layer_params__field_descriptors,
  core_ml__specification__reduce_sum_square_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_sum_square_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_sum_square_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reduce_log_sum_exp_layer_params__field_descriptors[3] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReduceLogSumExpLayerParams, n_axes),
    offsetof(CoreML__Specification__ReduceLogSumExpLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "keepDims",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceLogSumExpLayerParams, keepdims),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reduceAll",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ReduceLogSumExpLayerParams, reduceall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reduce_log_sum_exp_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = keepDims */
  2,   /* field[2] = reduceAll */
};
static const ProtobufCIntRange core_ml__specification__reduce_log_sum_exp_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__reduce_log_sum_exp_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReduceLogSumExpLayerParams",
  "ReduceLogSumExpLayerParams",
  "CoreML__Specification__ReduceLogSumExpLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReduceLogSumExpLayerParams),
  3,
  core_ml__specification__reduce_log_sum_exp_layer_params__field_descriptors,
  core_ml__specification__reduce_log_sum_exp_layer_params__field_indices_by_name,
  1,  core_ml__specification__reduce_log_sum_exp_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reduce_log_sum_exp_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__expand_dims_layer_params__field_descriptors[1] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ExpandDimsLayerParams, n_axes),
    offsetof(CoreML__Specification__ExpandDimsLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__expand_dims_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
};
static const ProtobufCIntRange core_ml__specification__expand_dims_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__expand_dims_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ExpandDimsLayerParams",
  "ExpandDimsLayerParams",
  "CoreML__Specification__ExpandDimsLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ExpandDimsLayerParams),
  1,
  core_ml__specification__expand_dims_layer_params__field_descriptors,
  core_ml__specification__expand_dims_layer_params__field_indices_by_name,
  1,  core_ml__specification__expand_dims_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__expand_dims_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__flatten_to2_dlayer_params__field_descriptors[1] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__FlattenTo2DLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__flatten_to2_dlayer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
};
static const ProtobufCIntRange core_ml__specification__flatten_to2_dlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__flatten_to2_dlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FlattenTo2DLayerParams",
  "FlattenTo2DLayerParams",
  "CoreML__Specification__FlattenTo2DLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__FlattenTo2DLayerParams),
  1,
  core_ml__specification__flatten_to2_dlayer_params__field_descriptors,
  core_ml__specification__flatten_to2_dlayer_params__field_indices_by_name,
  1,  core_ml__specification__flatten_to2_dlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__flatten_to2_dlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__reshape_static_layer_params__field_descriptors[1] =
{
  {
    "targetShape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__ReshapeStaticLayerParams, n_targetshape),
    offsetof(CoreML__Specification__ReshapeStaticLayerParams, targetshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__reshape_static_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = targetShape */
};
static const ProtobufCIntRange core_ml__specification__reshape_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__reshape_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReshapeStaticLayerParams",
  "ReshapeStaticLayerParams",
  "CoreML__Specification__ReshapeStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReshapeStaticLayerParams),
  1,
  core_ml__specification__reshape_static_layer_params__field_descriptors,
  core_ml__specification__reshape_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__reshape_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reshape_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__reshape_like_layer_params__field_descriptors NULL
#define core_ml__specification__reshape_like_layer_params__field_indices_by_name NULL
#define core_ml__specification__reshape_like_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__reshape_like_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReshapeLikeLayerParams",
  "ReshapeLikeLayerParams",
  "CoreML__Specification__ReshapeLikeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReshapeLikeLayerParams),
  0,
  core_ml__specification__reshape_like_layer_params__field_descriptors,
  core_ml__specification__reshape_like_layer_params__field_indices_by_name,
  0,  core_ml__specification__reshape_like_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reshape_like_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__reshape_dynamic_layer_params__field_descriptors NULL
#define core_ml__specification__reshape_dynamic_layer_params__field_indices_by_name NULL
#define core_ml__specification__reshape_dynamic_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__reshape_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ReshapeDynamicLayerParams",
  "ReshapeDynamicLayerParams",
  "CoreML__Specification__ReshapeDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ReshapeDynamicLayerParams),
  0,
  core_ml__specification__reshape_dynamic_layer_params__field_descriptors,
  core_ml__specification__reshape_dynamic_layer_params__field_indices_by_name,
  0,  core_ml__specification__reshape_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__reshape_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__squeeze_layer_params__field_descriptors[2] =
{
  {
    "axes",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__SqueezeLayerParams, n_axes),
    offsetof(CoreML__Specification__SqueezeLayerParams, axes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "squeezeAll",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SqueezeLayerParams, squeezeall),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__squeeze_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axes */
  1,   /* field[1] = squeezeAll */
};
static const ProtobufCIntRange core_ml__specification__squeeze_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__squeeze_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SqueezeLayerParams",
  "SqueezeLayerParams",
  "CoreML__Specification__SqueezeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SqueezeLayerParams),
  2,
  core_ml__specification__squeeze_layer_params__field_descriptors,
  core_ml__specification__squeeze_layer_params__field_indices_by_name,
  1,  core_ml__specification__squeeze_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__squeeze_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__top_klayer_params__field_descriptors[3] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__TopKLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "K",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__TopKLayerParams, k),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "useBottomK",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__TopKLayerParams, usebottomk),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__top_klayer_params__field_indices_by_name[] = {
  1,   /* field[1] = K */
  0,   /* field[0] = axis */
  2,   /* field[2] = useBottomK */
};
static const ProtobufCIntRange core_ml__specification__top_klayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__top_klayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.TopKLayerParams",
  "TopKLayerParams",
  "CoreML__Specification__TopKLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__TopKLayerParams),
  3,
  core_ml__specification__top_klayer_params__field_descriptors,
  core_ml__specification__top_klayer_params__field_indices_by_name,
  1,  core_ml__specification__top_klayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__top_klayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__arg_max_layer_params__field_descriptors[2] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ArgMaxLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "removeDim",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ArgMaxLayerParams, removedim),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__arg_max_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = removeDim */
};
static const ProtobufCIntRange core_ml__specification__arg_max_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__arg_max_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ArgMaxLayerParams",
  "ArgMaxLayerParams",
  "CoreML__Specification__ArgMaxLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ArgMaxLayerParams),
  2,
  core_ml__specification__arg_max_layer_params__field_descriptors,
  core_ml__specification__arg_max_layer_params__field_indices_by_name,
  1,  core_ml__specification__arg_max_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__arg_max_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__arg_min_layer_params__field_descriptors[2] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ArgMinLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "removeDim",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ArgMinLayerParams, removedim),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__arg_min_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = removeDim */
};
static const ProtobufCIntRange core_ml__specification__arg_min_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__arg_min_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ArgMinLayerParams",
  "ArgMinLayerParams",
  "CoreML__Specification__ArgMinLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ArgMinLayerParams),
  2,
  core_ml__specification__arg_min_layer_params__field_descriptors,
  core_ml__specification__arg_min_layer_params__field_indices_by_name,
  1,  core_ml__specification__arg_min_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__arg_min_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__split_ndlayer_params__field_descriptors[3] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SplitNDLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "numSplits",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SplitNDLayerParams, numsplits),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "splitSizes",
    3,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__SplitNDLayerParams, n_splitsizes),
    offsetof(CoreML__Specification__SplitNDLayerParams, splitsizes),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__split_ndlayer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = numSplits */
  2,   /* field[2] = splitSizes */
};
static const ProtobufCIntRange core_ml__specification__split_ndlayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__split_ndlayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SplitNDLayerParams",
  "SplitNDLayerParams",
  "CoreML__Specification__SplitNDLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SplitNDLayerParams),
  3,
  core_ml__specification__split_ndlayer_params__field_descriptors,
  core_ml__specification__split_ndlayer_params__field_indices_by_name,
  1,  core_ml__specification__split_ndlayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__split_ndlayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__ceil_layer_params__field_descriptors NULL
#define core_ml__specification__ceil_layer_params__field_indices_by_name NULL
#define core_ml__specification__ceil_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__ceil_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CeilLayerParams",
  "CeilLayerParams",
  "CoreML__Specification__CeilLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CeilLayerParams),
  0,
  core_ml__specification__ceil_layer_params__field_descriptors,
  core_ml__specification__ceil_layer_params__field_indices_by_name,
  0,  core_ml__specification__ceil_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__ceil_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__round_layer_params__field_descriptors NULL
#define core_ml__specification__round_layer_params__field_indices_by_name NULL
#define core_ml__specification__round_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__round_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RoundLayerParams",
  "RoundLayerParams",
  "CoreML__Specification__RoundLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RoundLayerParams),
  0,
  core_ml__specification__round_layer_params__field_descriptors,
  core_ml__specification__round_layer_params__field_indices_by_name,
  0,  core_ml__specification__round_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__round_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__floor_layer_params__field_descriptors NULL
#define core_ml__specification__floor_layer_params__field_indices_by_name NULL
#define core_ml__specification__floor_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__floor_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.FloorLayerParams",
  "FloorLayerParams",
  "CoreML__Specification__FloorLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__FloorLayerParams),
  0,
  core_ml__specification__floor_layer_params__field_descriptors,
  core_ml__specification__floor_layer_params__field_indices_by_name,
  0,  core_ml__specification__floor_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__floor_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__sign_layer_params__field_descriptors NULL
#define core_ml__specification__sign_layer_params__field_indices_by_name NULL
#define core_ml__specification__sign_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__sign_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SignLayerParams",
  "SignLayerParams",
  "CoreML__Specification__SignLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SignLayerParams),
  0,
  core_ml__specification__sign_layer_params__field_descriptors,
  core_ml__specification__sign_layer_params__field_indices_by_name,
  0,  core_ml__specification__sign_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__sign_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__clip_layer_params__field_descriptors[2] =
{
  {
    "minVal",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ClipLayerParams, minval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "maxVal",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ClipLayerParams, maxval),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__clip_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = maxVal */
  0,   /* field[0] = minVal */
};
static const ProtobufCIntRange core_ml__specification__clip_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__clip_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ClipLayerParams",
  "ClipLayerParams",
  "CoreML__Specification__ClipLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ClipLayerParams),
  2,
  core_ml__specification__clip_layer_params__field_descriptors,
  core_ml__specification__clip_layer_params__field_indices_by_name,
  1,  core_ml__specification__clip_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__clip_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__slice_static_layer_params__field_descriptors[6] =
{
  {
    "beginIds",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__SliceStaticLayerParams, n_beginids),
    offsetof(CoreML__Specification__SliceStaticLayerParams, beginids),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beginMasks",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__SliceStaticLayerParams, n_beginmasks),
    offsetof(CoreML__Specification__SliceStaticLayerParams, beginmasks),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "endIds",
    3,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__SliceStaticLayerParams, n_endids),
    offsetof(CoreML__Specification__SliceStaticLayerParams, endids),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "endMasks",
    4,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__SliceStaticLayerParams, n_endmasks),
    offsetof(CoreML__Specification__SliceStaticLayerParams, endmasks),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strides",
    5,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__SliceStaticLayerParams, n_strides),
    offsetof(CoreML__Specification__SliceStaticLayerParams, strides),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "squeezeMasks",
    6,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__SliceStaticLayerParams, n_squeezemasks),
    offsetof(CoreML__Specification__SliceStaticLayerParams, squeezemasks),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__slice_static_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = beginIds */
  1,   /* field[1] = beginMasks */
  2,   /* field[2] = endIds */
  3,   /* field[3] = endMasks */
  5,   /* field[5] = squeezeMasks */
  4,   /* field[4] = strides */
};
static const ProtobufCIntRange core_ml__specification__slice_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor core_ml__specification__slice_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SliceStaticLayerParams",
  "SliceStaticLayerParams",
  "CoreML__Specification__SliceStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SliceStaticLayerParams),
  6,
  core_ml__specification__slice_static_layer_params__field_descriptors,
  core_ml__specification__slice_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__slice_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__slice_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__slice_dynamic_layer_params__field_descriptors[5] =
{
  {
    "beginMasks",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__SliceDynamicLayerParams, n_beginmasks),
    offsetof(CoreML__Specification__SliceDynamicLayerParams, beginmasks),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "endIds",
    3,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__SliceDynamicLayerParams, n_endids),
    offsetof(CoreML__Specification__SliceDynamicLayerParams, endids),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "endMasks",
    4,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__SliceDynamicLayerParams, n_endmasks),
    offsetof(CoreML__Specification__SliceDynamicLayerParams, endmasks),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "strides",
    5,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__SliceDynamicLayerParams, n_strides),
    offsetof(CoreML__Specification__SliceDynamicLayerParams, strides),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "squeezeMasks",
    6,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_BOOL,
    offsetof(CoreML__Specification__SliceDynamicLayerParams, n_squeezemasks),
    offsetof(CoreML__Specification__SliceDynamicLayerParams, squeezemasks),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__slice_dynamic_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = beginMasks */
  1,   /* field[1] = endIds */
  2,   /* field[2] = endMasks */
  4,   /* field[4] = squeezeMasks */
  3,   /* field[3] = strides */
};
static const ProtobufCIntRange core_ml__specification__slice_dynamic_layer_params__number_ranges[1 + 1] =
{
  { 2, 0 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__slice_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SliceDynamicLayerParams",
  "SliceDynamicLayerParams",
  "CoreML__Specification__SliceDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SliceDynamicLayerParams),
  5,
  core_ml__specification__slice_dynamic_layer_params__field_descriptors,
  core_ml__specification__slice_dynamic_layer_params__field_indices_by_name,
  1,  core_ml__specification__slice_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__slice_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__tile_layer_params__field_descriptors[1] =
{
  {
    "reps",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_UINT64,
    offsetof(CoreML__Specification__TileLayerParams, n_reps),
    offsetof(CoreML__Specification__TileLayerParams, reps),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__tile_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = reps */
};
static const ProtobufCIntRange core_ml__specification__tile_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__tile_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.TileLayerParams",
  "TileLayerParams",
  "CoreML__Specification__TileLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__TileLayerParams),
  1,
  core_ml__specification__tile_layer_params__field_descriptors,
  core_ml__specification__tile_layer_params__field_indices_by_name,
  1,  core_ml__specification__tile_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__tile_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__get_shape_layer_params__field_descriptors NULL
#define core_ml__specification__get_shape_layer_params__field_indices_by_name NULL
#define core_ml__specification__get_shape_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__get_shape_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GetShapeLayerParams",
  "GetShapeLayerParams",
  "CoreML__Specification__GetShapeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GetShapeLayerParams),
  0,
  core_ml__specification__get_shape_layer_params__field_descriptors,
  core_ml__specification__get_shape_layer_params__field_indices_by_name,
  0,  core_ml__specification__get_shape_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__get_shape_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
#define core_ml__specification__erf_layer_params__field_descriptors NULL
#define core_ml__specification__erf_layer_params__field_indices_by_name NULL
#define core_ml__specification__erf_layer_params__number_ranges NULL
const ProtobufCMessageDescriptor core_ml__specification__erf_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ErfLayerParams",
  "ErfLayerParams",
  "CoreML__Specification__ErfLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ErfLayerParams),
  0,
  core_ml__specification__erf_layer_params__field_descriptors,
  core_ml__specification__erf_layer_params__field_indices_by_name,
  0,  core_ml__specification__erf_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__erf_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__gelu_layer_params__gelu_mode__enum_values_by_number[3] =
{
  { "EXACT", "CORE_ML__SPECIFICATION__GELU_LAYER_PARAMS__GELU_MODE__EXACT", 0 },
  { "TANH_APPROXIMATION", "CORE_ML__SPECIFICATION__GELU_LAYER_PARAMS__GELU_MODE__TANH_APPROXIMATION", 1 },
  { "SIGMOID_APPROXIMATION", "CORE_ML__SPECIFICATION__GELU_LAYER_PARAMS__GELU_MODE__SIGMOID_APPROXIMATION", 2 },
};
static const ProtobufCIntRange core_ml__specification__gelu_layer_params__gelu_mode__value_ranges[] = {
{0, 0},{0, 3}
};
static const ProtobufCEnumValueIndex core_ml__specification__gelu_layer_params__gelu_mode__enum_values_by_name[3] =
{
  { "EXACT", 0 },
  { "SIGMOID_APPROXIMATION", 2 },
  { "TANH_APPROXIMATION", 1 },
};
const ProtobufCEnumDescriptor core_ml__specification__gelu_layer_params__gelu_mode__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GeluLayerParams.GeluMode",
  "GeluMode",
  "CoreML__Specification__GeluLayerParams__GeluMode",
  "CoreML.Specification",
  3,
  core_ml__specification__gelu_layer_params__gelu_mode__enum_values_by_number,
  3,
  core_ml__specification__gelu_layer_params__gelu_mode__enum_values_by_name,
  1,
  core_ml__specification__gelu_layer_params__gelu_mode__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor core_ml__specification__gelu_layer_params__field_descriptors[1] =
{
  {
    "mode",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__GeluLayerParams, mode),
    &core_ml__specification__gelu_layer_params__gelu_mode__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__gelu_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = mode */
};
static const ProtobufCIntRange core_ml__specification__gelu_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 1 }
};
const ProtobufCMessageDescriptor core_ml__specification__gelu_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.GeluLayerParams",
  "GeluLayerParams",
  "CoreML__Specification__GeluLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__GeluLayerParams),
  1,
  core_ml__specification__gelu_layer_params__field_descriptors,
  core_ml__specification__gelu_layer_params__field_indices_by_name,
  1,  core_ml__specification__gelu_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__gelu_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__range_static_layer_params__field_descriptors[3] =
{
  {
    "endValue",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RangeStaticLayerParams, endvalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "startValue",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RangeStaticLayerParams, startvalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stepSizeValue",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RangeStaticLayerParams, stepsizevalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__range_static_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = endValue */
  1,   /* field[1] = startValue */
  2,   /* field[2] = stepSizeValue */
};
static const ProtobufCIntRange core_ml__specification__range_static_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__range_static_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RangeStaticLayerParams",
  "RangeStaticLayerParams",
  "CoreML__Specification__RangeStaticLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RangeStaticLayerParams),
  3,
  core_ml__specification__range_static_layer_params__field_descriptors,
  core_ml__specification__range_static_layer_params__field_indices_by_name,
  1,  core_ml__specification__range_static_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__range_static_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__range_dynamic_layer_params__field_descriptors[2] =
{
  {
    "startValue",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RangeDynamicLayerParams, startvalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stepSizeValue",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__RangeDynamicLayerParams, stepsizevalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__range_dynamic_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = startValue */
  1,   /* field[1] = stepSizeValue */
};
static const ProtobufCIntRange core_ml__specification__range_dynamic_layer_params__number_ranges[1 + 1] =
{
  { 2, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__range_dynamic_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.RangeDynamicLayerParams",
  "RangeDynamicLayerParams",
  "CoreML__Specification__RangeDynamicLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__RangeDynamicLayerParams),
  2,
  core_ml__specification__range_dynamic_layer_params__field_descriptors,
  core_ml__specification__range_dynamic_layer_params__field_indices_by_name,
  1,  core_ml__specification__range_dynamic_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__range_dynamic_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__sliding_windows_layer_params__field_descriptors[3] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SlidingWindowsLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "windowSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SlidingWindowsLayerParams, windowsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "step",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SlidingWindowsLayerParams, step),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__sliding_windows_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  2,   /* field[2] = step */
  1,   /* field[1] = windowSize */
};
static const ProtobufCIntRange core_ml__specification__sliding_windows_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__sliding_windows_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SlidingWindowsLayerParams",
  "SlidingWindowsLayerParams",
  "CoreML__Specification__SlidingWindowsLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SlidingWindowsLayerParams),
  3,
  core_ml__specification__sliding_windows_layer_params__field_descriptors,
  core_ml__specification__sliding_windows_layer_params__field_indices_by_name,
  1,  core_ml__specification__sliding_windows_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__sliding_windows_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__layer_normalization_layer_params__field_descriptors[4] =
{
  {
    "normalizedShape",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_INT64,
    offsetof(CoreML__Specification__LayerNormalizationLayerParams, n_normalizedshape),
    offsetof(CoreML__Specification__LayerNormalizationLayerParams, normalizedshape),
    NULL,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "eps",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LayerNormalizationLayerParams, eps),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "gamma",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LayerNormalizationLayerParams, gamma),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LayerNormalizationLayerParams, beta),
    &core_ml__specification__weight_params__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__layer_normalization_layer_params__field_indices_by_name[] = {
  3,   /* field[3] = beta */
  1,   /* field[1] = eps */
  2,   /* field[2] = gamma */
  0,   /* field[0] = normalizedShape */
};
static const ProtobufCIntRange core_ml__specification__layer_normalization_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__layer_normalization_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LayerNormalizationLayerParams",
  "LayerNormalizationLayerParams",
  "CoreML__Specification__LayerNormalizationLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LayerNormalizationLayerParams),
  4,
  core_ml__specification__layer_normalization_layer_params__field_descriptors,
  core_ml__specification__layer_normalization_layer_params__field_indices_by_name,
  1,  core_ml__specification__layer_normalization_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__layer_normalization_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__non_maximum_suppression_layer_params__field_descriptors[4] =
{
  {
    "iouThreshold",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NonMaximumSuppressionLayerParams, iouthreshold),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "scoreThreshold",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NonMaximumSuppressionLayerParams, scorethreshold),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "maxBoxes",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NonMaximumSuppressionLayerParams, maxboxes),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "perClassSuppression",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NonMaximumSuppressionLayerParams, perclasssuppression),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__non_maximum_suppression_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = iouThreshold */
  2,   /* field[2] = maxBoxes */
  3,   /* field[3] = perClassSuppression */
  1,   /* field[1] = scoreThreshold */
};
static const ProtobufCIntRange core_ml__specification__non_maximum_suppression_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__non_maximum_suppression_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NonMaximumSuppressionLayerParams",
  "NonMaximumSuppressionLayerParams",
  "CoreML__Specification__NonMaximumSuppressionLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NonMaximumSuppressionLayerParams),
  4,
  core_ml__specification__non_maximum_suppression_layer_params__field_descriptors,
  core_ml__specification__non_maximum_suppression_layer_params__field_indices_by_name,
  1,  core_ml__specification__non_maximum_suppression_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__non_maximum_suppression_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__clamped_re_lulayer_params__field_descriptors[2] =
{
  {
    "alpha",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ClampedReLULayerParams, alpha),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ClampedReLULayerParams, beta),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__clamped_re_lulayer_params__field_indices_by_name[] = {
  0,   /* field[0] = alpha */
  1,   /* field[1] = beta */
};
static const ProtobufCIntRange core_ml__specification__clamped_re_lulayer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__clamped_re_lulayer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ClampedReLULayerParams",
  "ClampedReLULayerParams",
  "CoreML__Specification__ClampedReLULayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ClampedReLULayerParams),
  2,
  core_ml__specification__clamped_re_lulayer_params__field_descriptors,
  core_ml__specification__clamped_re_lulayer_params__field_indices_by_name,
  1,  core_ml__specification__clamped_re_lulayer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__clamped_re_lulayer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__arg_sort_layer_params__field_descriptors[2] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ArgSortLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "descending",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__ArgSortLayerParams, descending),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__arg_sort_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = descending */
};
static const ProtobufCIntRange core_ml__specification__arg_sort_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__arg_sort_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ArgSortLayerParams",
  "ArgSortLayerParams",
  "CoreML__Specification__ArgSortLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__ArgSortLayerParams),
  2,
  core_ml__specification__arg_sort_layer_params__field_descriptors,
  core_ml__specification__arg_sort_layer_params__field_indices_by_name,
  1,  core_ml__specification__arg_sort_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__arg_sort_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__slice_by_size_layer_params__field_descriptors[2] =
{
  {
    "size",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SliceBySizeLayerParams, size),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "axis",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SliceBySizeLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__slice_by_size_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = axis */
  0,   /* field[0] = size */
};
static const ProtobufCIntRange core_ml__specification__slice_by_size_layer_params__number_ranges[1 + 1] =
{
  { 2, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__slice_by_size_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SliceBySizeLayerParams",
  "SliceBySizeLayerParams",
  "CoreML__Specification__SliceBySizeLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SliceBySizeLayerParams),
  2,
  core_ml__specification__slice_by_size_layer_params__field_descriptors,
  core_ml__specification__slice_by_size_layer_params__field_indices_by_name,
  1,  core_ml__specification__slice_by_size_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__slice_by_size_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__neural_network_classifier__field_descriptors[8] =
{
  {
    "layers",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkClassifier, n_layers),
    offsetof(CoreML__Specification__NeuralNetworkClassifier, layers),
    &core_ml__specification__neural_network_layer__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "preprocessing",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkClassifier, n_preprocessing),
    offsetof(CoreML__Specification__NeuralNetworkClassifier, preprocessing),
    &core_ml__specification__neural_network_preprocessing__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "arrayInputShapeMapping",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkClassifier, arrayinputshapemapping),
    &core_ml__specification__neural_network_multi_array_shape_mapping__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "imageInputShapeMapping",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkClassifier, imageinputshapemapping),
    &core_ml__specification__neural_network_image_shape_mapping__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "updateParams",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkClassifier, updateparams),
    &core_ml__specification__network_update_parameters__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "stringClassLabels",
    100,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkClassifier, class_labels_case),
    offsetof(CoreML__Specification__NeuralNetworkClassifier, stringclasslabels),
    &core_ml__specification__string_vector__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "int64ClassLabels",
    101,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkClassifier, class_labels_case),
    offsetof(CoreML__Specification__NeuralNetworkClassifier, int64classlabels),
    &core_ml__specification__int64_vector__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "labelProbabilityLayerName",
    200,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkClassifier, labelprobabilitylayername),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__neural_network_classifier__field_indices_by_name[] = {
  2,   /* field[2] = arrayInputShapeMapping */
  3,   /* field[3] = imageInputShapeMapping */
  6,   /* field[6] = int64ClassLabels */
  7,   /* field[7] = labelProbabilityLayerName */
  0,   /* field[0] = layers */
  1,   /* field[1] = preprocessing */
  5,   /* field[5] = stringClassLabels */
  4,   /* field[4] = updateParams */
};
static const ProtobufCIntRange core_ml__specification__neural_network_classifier__number_ranges[5 + 1] =
{
  { 1, 0 },
  { 5, 2 },
  { 10, 4 },
  { 100, 5 },
  { 200, 7 },
  { 0, 8 }
};
const ProtobufCMessageDescriptor core_ml__specification__neural_network_classifier__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkClassifier",
  "NeuralNetworkClassifier",
  "CoreML__Specification__NeuralNetworkClassifier",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NeuralNetworkClassifier),
  8,
  core_ml__specification__neural_network_classifier__field_descriptors,
  core_ml__specification__neural_network_classifier__field_indices_by_name,
  5,  core_ml__specification__neural_network_classifier__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__neural_network_classifier__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__one_hot_layer_params__field_descriptors[4] =
{
  {
    "oneHotVectorSize",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_UINT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__OneHotLayerParams, onehotvectorsize),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "axis",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__OneHotLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "onValue",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__OneHotLayerParams, onvalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "offValue",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__OneHotLayerParams, offvalue),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__one_hot_layer_params__field_indices_by_name[] = {
  1,   /* field[1] = axis */
  3,   /* field[3] = offValue */
  2,   /* field[2] = onValue */
  0,   /* field[0] = oneHotVectorSize */
};
static const ProtobufCIntRange core_ml__specification__one_hot_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor core_ml__specification__one_hot_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.OneHotLayerParams",
  "OneHotLayerParams",
  "CoreML__Specification__OneHotLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__OneHotLayerParams),
  4,
  core_ml__specification__one_hot_layer_params__field_descriptors,
  core_ml__specification__one_hot_layer_params__field_indices_by_name,
  1,  core_ml__specification__one_hot_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__one_hot_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__cum_sum_layer_params__field_descriptors[3] =
{
  {
    "axis",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT64,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CumSumLayerParams, axis),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "excludeFinalSum",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CumSumLayerParams, excludefinalsum),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "reverse",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_BOOL,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CumSumLayerParams, reverse),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__cum_sum_layer_params__field_indices_by_name[] = {
  0,   /* field[0] = axis */
  1,   /* field[1] = excludeFinalSum */
  2,   /* field[2] = reverse */
};
static const ProtobufCIntRange core_ml__specification__cum_sum_layer_params__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__cum_sum_layer_params__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CumSumLayerParams",
  "CumSumLayerParams",
  "CoreML__Specification__CumSumLayerParams",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CumSumLayerParams),
  3,
  core_ml__specification__cum_sum_layer_params__field_descriptors,
  core_ml__specification__cum_sum_layer_params__field_indices_by_name,
  1,  core_ml__specification__cum_sum_layer_params__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__cum_sum_layer_params__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__neural_network_regressor__field_descriptors[5] =
{
  {
    "layers",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkRegressor, n_layers),
    offsetof(CoreML__Specification__NeuralNetworkRegressor, layers),
    &core_ml__specification__neural_network_layer__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "preprocessing",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NeuralNetworkRegressor, n_preprocessing),
    offsetof(CoreML__Specification__NeuralNetworkRegressor, preprocessing),
    &core_ml__specification__neural_network_preprocessing__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "arrayInputShapeMapping",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkRegressor, arrayinputshapemapping),
    &core_ml__specification__neural_network_multi_array_shape_mapping__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "imageInputShapeMapping",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkRegressor, imageinputshapemapping),
    &core_ml__specification__neural_network_image_shape_mapping__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "updateParams",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NeuralNetworkRegressor, updateparams),
    &core_ml__specification__network_update_parameters__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__neural_network_regressor__field_indices_by_name[] = {
  2,   /* field[2] = arrayInputShapeMapping */
  3,   /* field[3] = imageInputShapeMapping */
  0,   /* field[0] = layers */
  1,   /* field[1] = preprocessing */
  4,   /* field[4] = updateParams */
};
static const ProtobufCIntRange core_ml__specification__neural_network_regressor__number_ranges[3 + 1] =
{
  { 1, 0 },
  { 5, 2 },
  { 10, 4 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__neural_network_regressor__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkRegressor",
  "NeuralNetworkRegressor",
  "CoreML__Specification__NeuralNetworkRegressor",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NeuralNetworkRegressor),
  5,
  core_ml__specification__neural_network_regressor__field_descriptors,
  core_ml__specification__neural_network_regressor__field_indices_by_name,
  3,  core_ml__specification__neural_network_regressor__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__neural_network_regressor__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__network_update_parameters__field_descriptors[5] =
{
  {
    "lossLayers",
    1,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__NetworkUpdateParameters, n_losslayers),
    offsetof(CoreML__Specification__NetworkUpdateParameters, losslayers),
    &core_ml__specification__loss_layer__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "optimizer",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NetworkUpdateParameters, optimizer),
    &core_ml__specification__optimizer__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "epochs",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NetworkUpdateParameters, epochs),
    &core_ml__specification__int64_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "shuffle",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NetworkUpdateParameters, shuffle),
    &core_ml__specification__bool_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "seed",
    20,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__NetworkUpdateParameters, seed),
    &core_ml__specification__int64_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__network_update_parameters__field_indices_by_name[] = {
  2,   /* field[2] = epochs */
  0,   /* field[0] = lossLayers */
  1,   /* field[1] = optimizer */
  4,   /* field[4] = seed */
  3,   /* field[3] = shuffle */
};
static const ProtobufCIntRange core_ml__specification__network_update_parameters__number_ranges[3 + 1] =
{
  { 1, 0 },
  { 10, 3 },
  { 20, 4 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__network_update_parameters__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NetworkUpdateParameters",
  "NetworkUpdateParameters",
  "CoreML__Specification__NetworkUpdateParameters",
  "CoreML.Specification",
  sizeof(CoreML__Specification__NetworkUpdateParameters),
  5,
  core_ml__specification__network_update_parameters__field_descriptors,
  core_ml__specification__network_update_parameters__field_indices_by_name,
  3,  core_ml__specification__network_update_parameters__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__network_update_parameters__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__loss_layer__field_descriptors[3] =
{
  {
    "name",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__LossLayer, name),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "categoricalCrossEntropyLossLayer",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__LossLayer, loss_layer_type_case),
    offsetof(CoreML__Specification__LossLayer, categoricalcrossentropylosslayer),
    &core_ml__specification__categorical_cross_entropy_loss_layer__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "meanSquaredErrorLossLayer",
    11,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__LossLayer, loss_layer_type_case),
    offsetof(CoreML__Specification__LossLayer, meansquarederrorlosslayer),
    &core_ml__specification__mean_squared_error_loss_layer__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__loss_layer__field_indices_by_name[] = {
  1,   /* field[1] = categoricalCrossEntropyLossLayer */
  2,   /* field[2] = meanSquaredErrorLossLayer */
  0,   /* field[0] = name */
};
static const ProtobufCIntRange core_ml__specification__loss_layer__number_ranges[2 + 1] =
{
  { 1, 0 },
  { 10, 1 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__loss_layer__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.LossLayer",
  "LossLayer",
  "CoreML__Specification__LossLayer",
  "CoreML.Specification",
  sizeof(CoreML__Specification__LossLayer),
  3,
  core_ml__specification__loss_layer__field_descriptors,
  core_ml__specification__loss_layer__field_indices_by_name,
  2,  core_ml__specification__loss_layer__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__loss_layer__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__categorical_cross_entropy_loss_layer__field_descriptors[2] =
{
  {
    "input",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CategoricalCrossEntropyLossLayer, input),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "target",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__CategoricalCrossEntropyLossLayer, target),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__categorical_cross_entropy_loss_layer__field_indices_by_name[] = {
  0,   /* field[0] = input */
  1,   /* field[1] = target */
};
static const ProtobufCIntRange core_ml__specification__categorical_cross_entropy_loss_layer__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__categorical_cross_entropy_loss_layer__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.CategoricalCrossEntropyLossLayer",
  "CategoricalCrossEntropyLossLayer",
  "CoreML__Specification__CategoricalCrossEntropyLossLayer",
  "CoreML.Specification",
  sizeof(CoreML__Specification__CategoricalCrossEntropyLossLayer),
  2,
  core_ml__specification__categorical_cross_entropy_loss_layer__field_descriptors,
  core_ml__specification__categorical_cross_entropy_loss_layer__field_indices_by_name,
  1,  core_ml__specification__categorical_cross_entropy_loss_layer__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__categorical_cross_entropy_loss_layer__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__mean_squared_error_loss_layer__field_descriptors[2] =
{
  {
    "input",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MeanSquaredErrorLossLayer, input),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "target",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__MeanSquaredErrorLossLayer, target),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__mean_squared_error_loss_layer__field_indices_by_name[] = {
  0,   /* field[0] = input */
  1,   /* field[1] = target */
};
static const ProtobufCIntRange core_ml__specification__mean_squared_error_loss_layer__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__mean_squared_error_loss_layer__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.MeanSquaredErrorLossLayer",
  "MeanSquaredErrorLossLayer",
  "CoreML__Specification__MeanSquaredErrorLossLayer",
  "CoreML.Specification",
  sizeof(CoreML__Specification__MeanSquaredErrorLossLayer),
  2,
  core_ml__specification__mean_squared_error_loss_layer__field_descriptors,
  core_ml__specification__mean_squared_error_loss_layer__field_indices_by_name,
  1,  core_ml__specification__mean_squared_error_loss_layer__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__mean_squared_error_loss_layer__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__optimizer__field_descriptors[2] =
{
  {
    "sgdOptimizer",
    10,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__Optimizer, optimizer_type_case),
    offsetof(CoreML__Specification__Optimizer, sgdoptimizer),
    &core_ml__specification__sgdoptimizer__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "adamOptimizer",
    11,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(CoreML__Specification__Optimizer, optimizer_type_case),
    offsetof(CoreML__Specification__Optimizer, adamoptimizer),
    &core_ml__specification__adam_optimizer__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_ONEOF,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__optimizer__field_indices_by_name[] = {
  1,   /* field[1] = adamOptimizer */
  0,   /* field[0] = sgdOptimizer */
};
static const ProtobufCIntRange core_ml__specification__optimizer__number_ranges[1 + 1] =
{
  { 10, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor core_ml__specification__optimizer__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.Optimizer",
  "Optimizer",
  "CoreML__Specification__Optimizer",
  "CoreML.Specification",
  sizeof(CoreML__Specification__Optimizer),
  2,
  core_ml__specification__optimizer__field_descriptors,
  core_ml__specification__optimizer__field_indices_by_name,
  1,  core_ml__specification__optimizer__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__optimizer__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__sgdoptimizer__field_descriptors[3] =
{
  {
    "learningRate",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SGDOptimizer, learningrate),
    &core_ml__specification__double_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "miniBatchSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SGDOptimizer, minibatchsize),
    &core_ml__specification__int64_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "momentum",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__SGDOptimizer, momentum),
    &core_ml__specification__double_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__sgdoptimizer__field_indices_by_name[] = {
  0,   /* field[0] = learningRate */
  1,   /* field[1] = miniBatchSize */
  2,   /* field[2] = momentum */
};
static const ProtobufCIntRange core_ml__specification__sgdoptimizer__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor core_ml__specification__sgdoptimizer__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.SGDOptimizer",
  "SGDOptimizer",
  "CoreML__Specification__SGDOptimizer",
  "CoreML.Specification",
  sizeof(CoreML__Specification__SGDOptimizer),
  3,
  core_ml__specification__sgdoptimizer__field_descriptors,
  core_ml__specification__sgdoptimizer__field_indices_by_name,
  1,  core_ml__specification__sgdoptimizer__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__sgdoptimizer__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor core_ml__specification__adam_optimizer__field_descriptors[5] =
{
  {
    "learningRate",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__AdamOptimizer, learningrate),
    &core_ml__specification__double_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "miniBatchSize",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__AdamOptimizer, minibatchsize),
    &core_ml__specification__int64_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta1",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__AdamOptimizer, beta1),
    &core_ml__specification__double_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "beta2",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__AdamOptimizer, beta2),
    &core_ml__specification__double_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "eps",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(CoreML__Specification__AdamOptimizer, eps),
    &core_ml__specification__double_parameter__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned core_ml__specification__adam_optimizer__field_indices_by_name[] = {
  2,   /* field[2] = beta1 */
  3,   /* field[3] = beta2 */
  4,   /* field[4] = eps */
  0,   /* field[0] = learningRate */
  1,   /* field[1] = miniBatchSize */
};
static const ProtobufCIntRange core_ml__specification__adam_optimizer__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor core_ml__specification__adam_optimizer__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "CoreML.Specification.AdamOptimizer",
  "AdamOptimizer",
  "CoreML__Specification__AdamOptimizer",
  "CoreML.Specification",
  sizeof(CoreML__Specification__AdamOptimizer),
  5,
  core_ml__specification__adam_optimizer__field_descriptors,
  core_ml__specification__adam_optimizer__field_indices_by_name,
  1,  core_ml__specification__adam_optimizer__number_ranges,
  (ProtobufCMessageInit) core_ml__specification__adam_optimizer__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue core_ml__specification__neural_network_multi_array_shape_mapping__enum_values_by_number[2] =
{
  { "RANK5_ARRAY_MAPPING", "CORE_ML__SPECIFICATION__NEURAL_NETWORK_MULTI_ARRAY_SHAPE_MAPPING__RANK5_ARRAY_MAPPING", 0 },
  { "EXACT_ARRAY_MAPPING", "CORE_ML__SPECIFICATION__NEURAL_NETWORK_MULTI_ARRAY_SHAPE_MAPPING__EXACT_ARRAY_MAPPING", 1 },
};
static const ProtobufCIntRange core_ml__specification__neural_network_multi_array_shape_mapping__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__neural_network_multi_array_shape_mapping__enum_values_by_name[2] =
{
  { "EXACT_ARRAY_MAPPING", 1 },
  { "RANK5_ARRAY_MAPPING", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__neural_network_multi_array_shape_mapping__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkMultiArrayShapeMapping",
  "NeuralNetworkMultiArrayShapeMapping",
  "CoreML__Specification__NeuralNetworkMultiArrayShapeMapping",
  "CoreML.Specification",
  2,
  core_ml__specification__neural_network_multi_array_shape_mapping__enum_values_by_number,
  2,
  core_ml__specification__neural_network_multi_array_shape_mapping__enum_values_by_name,
  1,
  core_ml__specification__neural_network_multi_array_shape_mapping__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCEnumValue core_ml__specification__neural_network_image_shape_mapping__enum_values_by_number[2] =
{
  { "RANK5_IMAGE_MAPPING", "CORE_ML__SPECIFICATION__NEURAL_NETWORK_IMAGE_SHAPE_MAPPING__RANK5_IMAGE_MAPPING", 0 },
  { "RANK4_IMAGE_MAPPING", "CORE_ML__SPECIFICATION__NEURAL_NETWORK_IMAGE_SHAPE_MAPPING__RANK4_IMAGE_MAPPING", 1 },
};
static const ProtobufCIntRange core_ml__specification__neural_network_image_shape_mapping__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex core_ml__specification__neural_network_image_shape_mapping__enum_values_by_name[2] =
{
  { "RANK4_IMAGE_MAPPING", 1 },
  { "RANK5_IMAGE_MAPPING", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__neural_network_image_shape_mapping__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.NeuralNetworkImageShapeMapping",
  "NeuralNetworkImageShapeMapping",
  "CoreML__Specification__NeuralNetworkImageShapeMapping",
  "CoreML.Specification",
  2,
  core_ml__specification__neural_network_image_shape_mapping__enum_values_by_number,
  2,
  core_ml__specification__neural_network_image_shape_mapping__enum_values_by_name,
  1,
  core_ml__specification__neural_network_image_shape_mapping__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCEnumValue core_ml__specification__scatter_mode__enum_values_by_number[7] =
{
  { "SCATTER_UPDATE", "CORE_ML__SPECIFICATION__SCATTER_MODE__SCATTER_UPDATE", 0 },
  { "SCATTER_ADD", "CORE_ML__SPECIFICATION__SCATTER_MODE__SCATTER_ADD", 1 },
  { "SCATTER_SUB", "CORE_ML__SPECIFICATION__SCATTER_MODE__SCATTER_SUB", 2 },
  { "SCATTER_MUL", "CORE_ML__SPECIFICATION__SCATTER_MODE__SCATTER_MUL", 3 },
  { "SCATTER_DIV", "CORE_ML__SPECIFICATION__SCATTER_MODE__SCATTER_DIV", 4 },
  { "SCATTER_MAX", "CORE_ML__SPECIFICATION__SCATTER_MODE__SCATTER_MAX", 5 },
  { "SCATTER_MIN", "CORE_ML__SPECIFICATION__SCATTER_MODE__SCATTER_MIN", 6 },
};
static const ProtobufCIntRange core_ml__specification__scatter_mode__value_ranges[] = {
{0, 0},{0, 7}
};
static const ProtobufCEnumValueIndex core_ml__specification__scatter_mode__enum_values_by_name[7] =
{
  { "SCATTER_ADD", 1 },
  { "SCATTER_DIV", 4 },
  { "SCATTER_MAX", 5 },
  { "SCATTER_MIN", 6 },
  { "SCATTER_MUL", 3 },
  { "SCATTER_SUB", 2 },
  { "SCATTER_UPDATE", 0 },
};
const ProtobufCEnumDescriptor core_ml__specification__scatter_mode__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "CoreML.Specification.ScatterMode",
  "ScatterMode",
  "CoreML__Specification__ScatterMode",
  "CoreML.Specification",
  7,
  core_ml__specification__scatter_mode__enum_values_by_number,
  7,
  core_ml__specification__scatter_mode__enum_values_by_name,
  1,
  core_ml__specification__scatter_mode__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
