/**
* @license
* Copyright 2018 Google LLC
*
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
* =============================================================================
*/
///
import { DataType } from '@tensorflow/tfjs-core';
import { Shape } from './common';
import { NodeConfig } from './node_config';
import { BaseSerialization, PyJson, PyJsonDict } from './types';
/** Constructor arguments for Layer. */
export interface LayerConfig extends PyJsonDict {
input_shape?: Shape;
batch_input_shape?: Shape;
batch_size?: number;
dtype?: DataType;
name?: string;
trainable?: boolean;
input_dtype?: DataType;
}
/**
* Converts a subtype of `LayerConfig` to a variant with restricted keys.
*
* This is a bit tricky because `keyof` obtains only local fields, not inherited
* fields. Thus, this type combines the keys from the `LayerConfig` supertype
* with those of the specific subtype.
*
* See ./types.ts for an explanation of the PyJson type.
*/
export type JsonLayer = C & LayerConfig & PyJson | Extract>;
/**
* A Keras JSON entry representing a layer.
*
* The Keras JSON convention is to provide the `class_name` (i.e., the layer
* type) at the top level, and then to place the layer-specific configuration in
* a `config` subtree. These layer-specific configurations are provided by
* subtypes of `LayerConfig`. Thus, this `*Serialization` has a type parameter
* giving the specific type of the wrapped `LayerConfig`.
*/
export interface BaseLayerSerialization extends BaseSerialization> {
name: string;
inbound_nodes?: NodeConfig[];
}