/**
|
* @license
|
* Copyright 2018 Google LLC. All Rights Reserved.
|
* 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.
|
* =============================================================================
|
*/
|
/// <amd-module name="@tensorflow/tfjs-core/dist/io/http" />
|
import { IORouter } from './router_registry';
|
import { IOHandler, LoadOptions, ModelArtifacts, SaveResult } from './types';
|
export declare class HTTPRequest implements IOHandler {
|
protected readonly path: string;
|
protected readonly requestInit: RequestInit;
|
private readonly fetch;
|
private readonly weightUrlConverter;
|
readonly DEFAULT_METHOD = "POST";
|
static readonly URL_SCHEME_REGEX: RegExp;
|
private readonly weightPathPrefix;
|
private readonly loadOptions;
|
constructor(path: string, loadOptions?: LoadOptions);
|
save(modelArtifacts: ModelArtifacts): Promise<SaveResult>;
|
private loadModelJSON;
|
/**
|
* Load model artifacts via HTTP request(s).
|
*
|
* See the documentation to `tf.io.http` for details on the saved
|
* artifacts.
|
*
|
* @returns The loaded model artifacts (if loading succeeds).
|
*/
|
load(): Promise<ModelArtifacts>;
|
private loadStream;
|
private getWeightUrls;
|
private loadWeights;
|
}
|
/**
|
* Extract the prefix and suffix of the url, where the prefix is the path before
|
* the last file, and suffix is the search params after the last file.
|
* ```
|
* const url = 'http://tfhub.dev/model/1/tensorflowjs_model.pb?tfjs-format=file'
|
* [prefix, suffix] = parseUrl(url)
|
* // prefix = 'http://tfhub.dev/model/1/'
|
* // suffix = '?tfjs-format=file'
|
* ```
|
* @param url the model url to be parsed.
|
*/
|
export declare function parseUrl(url: string): [string, string];
|
export declare function isHTTPScheme(url: string): boolean;
|
export declare const httpRouter: IORouter;
|
/**
|
* Creates an IOHandler subtype that sends model artifacts to HTTP server.
|
*
|
* An HTTP request of the `multipart/form-data` mime type will be sent to the
|
* `path` URL. The form data includes artifacts that represent the topology
|
* and/or weights of the model. In the case of Keras-style `tf.Model`, two
|
* blobs (files) exist in form-data:
|
* - A JSON file consisting of `modelTopology` and `weightsManifest`.
|
* - A binary weights file consisting of the concatenated weight values.
|
* These files are in the same format as the one generated by
|
* [tfjs_converter](https://js.tensorflow.org/tutorials/import-keras.html).
|
*
|
* The following code snippet exemplifies the client-side code that uses this
|
* function:
|
*
|
* ```js
|
* const model = tf.sequential();
|
* model.add(
|
* tf.layers.dense({units: 1, inputShape: [100], activation: 'sigmoid'}));
|
*
|
* const saveResult = await model.save(tf.io.http(
|
* 'http://model-server:5000/upload', {requestInit: {method: 'PUT'}}));
|
* console.log(saveResult);
|
* ```
|
*
|
* If the default `POST` method is to be used, without any custom parameters
|
* such as headers, you can simply pass an HTTP or HTTPS URL to `model.save`:
|
*
|
* ```js
|
* const saveResult = await model.save('http://model-server:5000/upload');
|
* ```
|
*
|
* The following GitHub Gist
|
* https://gist.github.com/dsmilkov/1b6046fd6132d7408d5257b0976f7864
|
* implements a server based on [flask](https://github.com/pallets/flask) that
|
* can receive the request. Upon receiving the model artifacts via the requst,
|
* this particular server reconstitutes instances of [Keras
|
* Models](https://keras.io/models/model/) in memory.
|
*
|
*
|
* @param path A URL path to the model.
|
* Can be an absolute HTTP path (e.g.,
|
* 'http://localhost:8000/model-upload)') or a relative path (e.g.,
|
* './model-upload').
|
* @param requestInit Request configurations to be used when sending
|
* HTTP request to server using `fetch`. It can contain fields such as
|
* `method`, `credentials`, `headers`, `mode`, etc. See
|
* https://developer.mozilla.org/en-US/docs/Web/API/Request/Request
|
* for more information. `requestInit` must not have a body, because the
|
* body will be set by TensorFlow.js. File blobs representing the model
|
* topology (filename: 'model.json') and the weights of the model (filename:
|
* 'model.weights.bin') will be appended to the body. If `requestInit` has a
|
* `body`, an Error will be thrown.
|
* @param loadOptions Optional configuration for the loading. It includes the
|
* following fields:
|
* - weightPathPrefix Optional, this specifies the path prefix for weight
|
* files, by default this is calculated from the path param.
|
* - fetchFunc Optional, custom `fetch` function. E.g., in Node.js,
|
* the `fetch` from node-fetch can be used here.
|
* - onProgress Optional, progress callback function, fired periodically
|
* before the load is completed.
|
* @returns An instance of `IOHandler`.
|
*
|
* @doc {
|
* heading: 'Models',
|
* subheading: 'Loading',
|
* namespace: 'io',
|
* ignoreCI: true
|
* }
|
*/
|
export declare function http(path: string, loadOptions?: LoadOptions): IOHandler;
|
/**
|
* Deprecated. Use `tf.io.http`.
|
* @param path
|
* @param loadOptions
|
*/
|
export declare function browserHTTPRequest(path: string, loadOptions?: LoadOptions): IOHandler;
|