blob: 2c1bf3d9d1cb73994ec7aa2f88149d7007207965 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Datatypes used in the Federated Service API.
// This module is derived from the Feature and Example proto definition of
// TensorFlow. See /tensorflow/core/example/feature.proto and
// /tensorflow/core/example/example.proto in the TensorFlow code.
// StringList, FloatList, Int64List and ValueList are same to tensor.mojom in
// platform2/ml/mojom.
// NOTE: This mojom should exist in two places and must be kept in sync:
// Chromium: TODO path
// Chrome OS: src/platform2/federated/mojom/
// Note: Other repos downstream of Chromium might also use this mojom.
// Example: A backwards-compatible mojom change (and corresponding
// implementation change) can be made in Chrome OS first, then replicated to the
// clients (Chromium, other downstream repos) later.
// TODO config a sync tool for federated mojo files.
// Use //chromeos/services/machine_learning/public/mojom/roll_mojom.sh to help
// replicate Chrome OS-side changes over to Chromium.
module chromeos.federated.mojom;
struct StringList {
array<string> value;
};
struct FloatList {
array<double> value;
};
struct Int64List {
array<int64> value;
};
// The union of all supported value types.
union ValueList {
StringList string_list;
FloatList float_list;
Int64List int64_list;
};
// The mirror of tensorflow::Features.
struct Features {
// Map from feature name to feature.
map<string, ValueList> feature;
};
// The mirror of tensorflow::Example.
struct Example {
Features features;
};