<?xml version="1.0" encoding="UTF-8"?>
  <!-- PDS4 XML/Schema for Name Space Id:ml  Version:1.2.0.0 - Fri May 19 00:10:23 UTC 2023 -->
  <!-- Generated from the PDS4 Information Model Version 1.20.0.0 - System Build 13.1 -->
  <!-- *** This PDS4 product schema is an operational deliverable. *** -->
  <!--                                                                           -->
  <!--               Dictionary Stack                                            -->
  <!-- 1.20.0.0 - pds: - Common Dictionary                                       -->
  <!-- 1.2.0.0 - ml: - Machine Learning Analysis                                 -->
  <!--                                                                           -->
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://pds.nasa.gov/pds4/ml/v1"
    xmlns:ml="http://pds.nasa.gov/pds4/ml/v1"
    xmlns:pds="http://pds.nasa.gov/pds4/pds/v1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1.2.0.0">
 
    <xs:import namespace="http://pds.nasa.gov/pds4/pds/v1" schemaLocation="https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1K00.xsd"/>
 
  <xs:annotation>
    <xs:documentation>
This data dictionary enables the specification of metadata that
    describes products generated by the use of a machine learning
    model.  It captures information about how the model was trained
    and evaluated. 
  
    ## CHANGE LOG ##
    1.2.0.0
    - Add several new classes: Optimization Algorithm; Augmentation Method; 
        Preprocessing Method; Trained Model Hyperparameter; 
        Trained Model Architecture; Calibration Method; Trained Model File.
    - Add trained_model_creation_date attribute to Trained Machine Learning Model class.
    - Add trained_model_objective_function_name and trained_model_objective_function_description to 
        Machine Learning Algorithm class. 
        
    1.1.0.0
    - Change data_set_size to data_set_count.
    - Expand attribute definitions.
    - Update steward name.
    
    1.0.1.0
    - Address Oxygen-flagged errors.
    - Make data_set_size a ASCII_NonNegative_Integer.
    - Update some attribute and class definitions.
    - Update README file per latest template.
    - Use PDS Information Model 1.18 (I).

    1.0.0.0
    - Initial release.
  
    </xs:documentation>
  </xs:annotation>
 
  <xs:element name="Machine_Learning" type="ml:Machine_Learning"> </xs:element>

  <xs:complexType name="Augmentation_Method">
    <xs:annotation>
      <xs:documentation>The Augmentation_Method class contains
        information about a data set's augmentation
        method.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="augmentation_method_name" nillable="true" type="ml:augmentation_method_name" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="augmentation_method_description" nillable="true" type="ml:augmentation_method_description" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="augmentation_method_parameter" nillable="true" type="ml:augmentation_method_parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="augmentation_method_parameter_value" nillable="true" type="ml:augmentation_method_parameter_value" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Calibration_Method">
    <xs:annotation>
      <xs:documentation>The Calibration_Method class is a container for
        classes and and attributes describing the Calibration Method. An
        external reference to a citation, such as a DOI, is
        optional.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="calibration_method_name" type="ml:calibration_method_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="calibration_method_description" type="ml:calibration_method_description" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="calibration_method_parameter" type="ml:calibration_method_parameter" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="calibration_method_parameter_value" type="ml:calibration_method_parameter_value" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:External_Reference" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Data_Set">
    <xs:annotation>
      <xs:documentation>The Data_Set class is the container for classes
        and attributes describing the size and version of data sets used
        by the machine learning model.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Machine_Learning">
    <xs:annotation>
      <xs:documentation>The Machine_Learning class is a container for
        all machine learning information in the label.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Trained_Machine_Learning_Model" type="ml:Trained_Machine_Learning_Model" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Machine_Learning_Algorithm">
    <xs:annotation>
      <xs:documentation>The Machine_Learning_Algorithm class is a
        container for classes and and attributes describing the
        algorithm type and learning style used. An external reference to
        a citation for the algorithm is required.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="algorithm_learning_style" type="ml:algorithm_learning_style" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="algorithm_type" type="ml:algorithm_type" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="algorithm_name" type="ml:algorithm_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_objective_function_name" type="ml:trained_model_objective_function_name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_objective_function_description" type="ml:trained_model_objective_function_description" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:External_Reference" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="ml:algorithm_learning_style = ('Semisupervised_Learning', 'Supervised_Learning', 'Unsupervised_Learning')"/> -->
    <!-- <xs:assert test="ml:algorithm_type = ('Convolutional_Neural_Network_Classifier')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Optimization_Algorithm">
    <xs:annotation>
      <xs:documentation>The Optimization_Algorithm class is a container
        for classes and and attributes describing the optimization
        algorithm used.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="optimization_algorithm_name" type="ml:optimization_algorithm_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="optimization_algorithm_description" type="ml:optimization_algorithm_description" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="optimization_algorithm_parameter" type="ml:optimization_algorithm_parameter" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="optimization_algorithm_parameter_value" type="ml:optimization_algorithm_parameter_value" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Preprocessing_Method">
    <xs:annotation>
      <xs:documentation>The Preprocessing_Method class contains
        information about a data set's preprocessing
        method.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="preprocessing_method_name" nillable="true" type="ml:preprocessing_method_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="preprocessing_method_description" nillable="true" type="ml:preprocessing_method_description" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="preprocessing_method_parameter" nillable="true" type="ml:preprocessing_method_parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="preprocessing_method_parameter_value" nillable="true" type="ml:preprocessing_method_parameter_value" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Test_Performance">
    <xs:annotation>
      <xs:documentation>The Test_Performance class contains information
        about a trained model's performance on the test
        set.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="performance_measure" type="ml:performance_measure" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="performance_score" type="ml:performance_score" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Test_Set">
    <xs:annotation>
      <xs:documentation>The Test_Set class belongs to the Data_Set class
        family and contains attributes describing the size and version
        of the data set used to test the machine learning model (i.e.,
        in terms of generalization to previously unseen
        data).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="ml:Data_Set">
        <xs:sequence>
          <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Trained_Machine_Learning_Model">
    <xs:annotation>
      <xs:documentation>The Trained_Machine_Learning_Model class is a
        container for information about how a given model was trained
        and evaluated. Machine_Learning_Algorithm, Training_Set,
        Optimization_Algorithm, Trained_Model_Hyperparameter, and
        Trained_Model_File are required, while Validation_Set, Test_Set,
        Test_Performance, Trained_Model_Architecture, and
        Calibration_Method are optional.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_version_id" type="ml:trained_model_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_name" type="ml:trained_model_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_creation_date" type="ml:trained_model_creation_date" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Machine_Learning_Algorithm" type="ml:Machine_Learning_Algorithm" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Training_Set" type="ml:Training_Set" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Validation_Set" type="ml:Validation_Set" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Test_Set" type="ml:Test_Set" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Test_Performance" type="ml:Test_Performance" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Optimization_Algorithm" type="ml:Optimization_Algorithm" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Trained_Model_Hyperparameter" type="ml:Trained_Model_Hyperparameter" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Trained_Model_Architecture" type="ml:Trained_Model_Architecture" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Calibration_Method" type="ml:Calibration_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Trained_Model_File" type="ml:Trained_Model_File" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Trained_Model_Architecture">
    <xs:annotation>
      <xs:documentation>The Trained_Model_Architecture class is a
        container for classes and and attributes describing the trained
        model architecture. An internal reference to the architecture is
        optional.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_architecture_name" type="ml:trained_model_architecture_name" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="trained_model_architecture_version_id" type="ml:trained_model_architecture_version_id" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="trained_model_architecture_description" type="ml:trained_model_architecture_description" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Trained_Model_File">
    <xs:annotation>
      <xs:documentation>The Trained_Model_File class is a container for
        classes and and attributes describing the trained model file. An
        external reference for the trained model file is
        required.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_file_name" type="ml:trained_model_file_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_file_description" type="ml:trained_model_file_description" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:External_Reference" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Trained_Model_Hyperparameter">
    <xs:annotation>
      <xs:documentation>The Trained_Model_Hyperparameter class is a
        container for classes and and attributes describing the trained
        model hyperparameter.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="trained_model_hyperparameter_name" type="ml:trained_model_hyperparameter_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="trained_model_hyperparameter_value" type="ml:trained_model_hyperparameter_value" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Training_Set">
    <xs:annotation>
      <xs:documentation>The Training_Set class belongs to the Data_Set
        class family and contains attributes that describe the size and
        version of the data set used to train the machine learning
        model.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="ml:Data_Set">
        <xs:sequence>
          <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Validation_Set">
    <xs:annotation>
      <xs:documentation>The Validation_Set class belongs to the Data_Set
        class family and contains attributes that describe the size and
        version of the data set used to validate the machine learning
        model (e.g., to choose the best
        hyperparameters).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="ml:Data_Set">
        <xs:sequence>
          <xs:element name="data_set_version_id" type="ml:data_set_version_id" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="data_set_count" type="ml:data_set_count" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Augmentation_Method" type="ml:Augmentation_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="Preprocessing_Method" type="ml:Preprocessing_Method" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

    <xs:annotation>
      <xs:documentation>This section contains the simpleTypes that provide more constraints
        than those at the base data type level. The simpleTypes defined here build on the base data
        types. This is another component of the common dictionary and therefore falls within the
        common namespace.
      </xs:documentation>
    </xs:annotation>

  <xs:simpleType name="algorithm_learning_style">
    <xs:annotation>
      <xs:documentation>The algorithm_learning_style attribute describes
        the type of learning style employed by the algorithm to solve a
        problem. Specifically, the learning style depends on whether
        labeled or unlabeled data was employed to train the model.
        Labeled data includes observations that are associated with a
        desired output such as a class or numeric
        value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="algorithm_name">
    <xs:annotation>
      <xs:documentation>The algorithm_name attribute specifies the name
        of the algorithm used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="algorithm_type">
    <xs:annotation>
      <xs:documentation>The algorithm_type attribute describes the kind
        of algorithm used, such as a regression model, neural network,
        tree, etc.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="augmentation_method_description">
    <xs:annotation>
      <xs:documentation>The augmentation_method_description attribute
        describes the augmentation method in more
        detail.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="augmentation_method_name">
    <xs:annotation>
      <xs:documentation>The augmentation_method_name attribute names any
        method by which an image was augmented, e.g. 180 degrees
        counterclockwise rotation; horizontal flipping; brightness
        adjustment.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="augmentation_method_parameter">
    <xs:annotation>
      <xs:documentation>The augmentation_method_parameter attribute
        names any parameters, e.g. gamma.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="augmentation_method_parameter_value">
    <xs:annotation>
      <xs:documentation>The augmentation_method_parameter_value
        attribute specifies the value of the named parameter, e.g. for a
        parameter "gamma," the value could be [0.5,
        1.5].</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="calibration_method_description">
    <xs:annotation>
      <xs:documentation>The calibration_method_description attribute
        specifies any additional details about the calibration method
        used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="calibration_method_name">
    <xs:annotation>
      <xs:documentation>The calibration_method_name attribute specifies
        the name of the calibration used, e.g. "temperature
        scaling."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="calibration_method_parameter">
    <xs:annotation>
      <xs:documentation>The calibration_method_parameter attribute
        specifies the name of the parameter used, e.g.
        "temperature."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="calibration_method_parameter_value">
    <xs:annotation>
      <xs:documentation>The calibration_method_parameter_value attribute
        sepcifies the value of the named parameter, e.g. for a parameter
        "temperature," the value could be "1.31."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="data_set_count">
    <xs:annotation>
      <xs:documentation>The data_set_count attribute provides the number
        of items in the data set.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="data_set_version_id">
    <xs:annotation>
      <xs:documentation>The data_set_version_id attribute specifies the
        data set version number.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_VID">
  <!-- format="M.n" -->
     <xs:minLength value="3"/>
     <xs:maxLength value="100"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_description">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_description attribute
        specifies any additional details about the optimization
        algorithm.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_name">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_name attribute
        specifies the name of the operation algorithm, e.g. "stochastic
        gradient descent."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_parameter">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_parameter attribute
        specifies the name of a parameter used, e.g. "conv1 learning
        rate," or "weight decay."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="optimization_algorithm_parameter_value">
    <xs:annotation>
      <xs:documentation>The optimization_algorithm_parameter_value
        attribute specifies the value of the named parameter, e.g. for a
        parameter "conv1 learning rate," the value could be
        "0.001."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="performance_measure">
    <xs:annotation>
      <xs:documentation>The performance_measure attribute specifies the
        name of the measure (or metric) used to report performance of
        the model on the test set.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="performance_score">
    <xs:annotation>
      <xs:documentation>The performance_score attribute reports the
        numeric score the model achieved using performance_measure on
        the test set. Values are not constrained since the measure may
        not be a strict metric. Examples could include accuracy, loss,
        runtime, memory consumption, etc.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="preprocessing_method_description">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_description attribute
        describes the preprocessing method in more
        detail.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="preprocessing_method_name">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_name attribute names
        any method by which an image was preprocessed, e.g. center
        cropping.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="preprocessing_method_parameter">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_parameter attribute
        names any preprocessing parameters.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="preprocessing_method_parameter_value">
    <xs:annotation>
      <xs:documentation>The preprocessing_method_parameter_value
        attribute specifies the value of the named preprocessing
        parameter.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="trained_model_architecture_description">
    <xs:annotation>
      <xs:documentation>The trained_model_architecture_description
        attribute specifies any additional details about the
        architecture.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_architecture_name">
    <xs:annotation>
      <xs:documentation>The trained_model_architecture_name attribute
        specifies the name of the architecture, e.g.
        "MSLNet."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_architecture_version_id">
    <xs:annotation>
      <xs:documentation> The trained_model_architecture_version_id
        attribute specifies the architecture version
        number.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_VID">
  <!-- format="M.n" -->
     <xs:minLength value="3"/>
     <xs:maxLength value="100"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_creation_date">
    <xs:annotation>
      <xs:documentation>The trained_model_creation_date attribute
        specifies the date that the model was created, in Year/Month/Day
        format.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Date_YMD">
  <!-- format="YYYY-MM-DD" -->
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_file_description">
    <xs:annotation>
      <xs:documentation>The trained_model_file_description attribute
        specifies any additional details about the trained model file,
        e.g. the file format.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_file_name">
    <xs:annotation>
      <xs:documentation>The trained_model_file_name attribute specifies
        the name of the trained model file.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_hyperparameter_name">
    <xs:annotation>
      <xs:documentation>The trained_model_hyperparameter_name attribute
        specifies the name of the hyperparameter, e.g. "batch size,"
        "normalization method," "number of epochs," "conv1 dropout
        rate," "conv2 dropout rate."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_hyperparameter_value">
    <xs:annotation>
      <xs:documentation>The trained_model_hyperparameter_value attribute
        specifies the value of the hyperparameter named, e.g."z-score"
        for normalization method, "100" for "number of
        epochs."</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_name">
    <xs:annotation>
      <xs:documentation>The trained_model_name attribute specifies the
        name of the model used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_objective_function_description">
    <xs:annotation>
      <xs:documentation>The trained_model_objective_function_description
        attribute describes the objective function
        used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_objective_function_name">
    <xs:annotation>
      <xs:documentation>The trained_model_objective_function_name
        attribute specifies the name of the objective function
        used.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="trained_model_version_id">
    <xs:annotation>
      <xs:documentation>The trained_model_version_id attribute specifies
        the trained model version number.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_VID">
  <!-- format="M.n" -->
     <xs:minLength value="3"/>
     <xs:maxLength value="100"/>
	   </xs:restriction>
  </xs:simpleType>
</xs:schema>
