You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.9 KiB
80 lines
2.9 KiB
//
|
|
// Copyright (C) 2018 The Android Open Source Project
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
// Flatbuffer schema for SAFT models.
|
|
//
|
|
// For info on flatbuffers, see http://go/flatbuffers and
|
|
// http://google.github.io/flatbuffers/, including info on writing schemas:
|
|
// http://google.github.io/flatbuffers/flatbuffers_guide_writing_schema.html
|
|
|
|
namespace libtextclassifier3.saft_fbs;
|
|
|
|
// SM stands for Saft Model. The next two digits are meant to identify
|
|
// incompatible versions. Ideally, we'll never have to go beyond 00.
|
|
file_identifier "SM00";
|
|
|
|
// Extension stands for Saft Model in FlatBuffer format.
|
|
file_extension "smfb";
|
|
|
|
table ModelParameter {
|
|
// Parameter name.
|
|
name:string;
|
|
|
|
// Parameter value.
|
|
value:string;
|
|
}
|
|
|
|
// Input for a SAFT model. Inputs usually provide extra resources: e.g., the
|
|
// parameters for a Neurosis FFNN with embeddings, or a word cluster structure,
|
|
// etc.
|
|
table ModelInput {
|
|
// Name of this input. Different input of the same model should have
|
|
// different names, such that we can non-ambiguously look them up.
|
|
name:string;
|
|
|
|
// General description of the type of this input. Required to parse the
|
|
// content of this input (see |data| below). If |data| is a flatbuffer, use
|
|
// "flatbuffer". If |data| is a proto, use "proto". Otherwise, use your best
|
|
// judgment: use something human-readable, and look around to make sure you
|
|
// don't invent a new name for something that already exists.
|
|
type:string;
|
|
|
|
// More specific information about the type of this input. E.g., if |type| is
|
|
// "flatbuffer", this should be the name of the root_type we should parse from
|
|
// the input bytes., e.g., "EmbeddingNetwork". If |type| is proto, this
|
|
// should be the name of the proto serialized as |data|, e.g.,
|
|
// "EmbeddingNetworkProto".
|
|
sub_type:string;
|
|
|
|
// The content of this input. With a generous alignment, such that we can
|
|
// accommodate mmap-friendly data structures. E.g., the word clusters used by
|
|
// the Translate team require 8-byte alignment.
|
|
data:[ubyte] (force_align: 16);
|
|
}
|
|
|
|
// A Saft model. A list of parameters with model settings (e.g., the
|
|
// specification of the features to use) and a list of inputs.
|
|
table Model {
|
|
parameters:[ModelParameter];
|
|
inputs:[ModelInput];
|
|
|
|
// Crc32 checksum of all parameters and inputs (including the bytes of the
|
|
// inputs). Used to check that the model has not been corrupted.
|
|
crc32:uint32;
|
|
}
|
|
|
|
root_type Model;
|