입력 및 출력 서명이 있는 단일 함수로 호출할 수 있는 그래프입니다.
함수는 SavedModelBundle
에 정의된 tf.function 을 호출할 수도 있습니다.
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
공개 방법
텐서 | |
맵<문자열, 텐서 > | |
무효의 | 닫다 () |
정적 콘크리트 함수 | |
정적 콘크리트 함수 | |
정적 콘크리트 함수 | |
그래프 | 그래프 () 이 함수의 그래프를 반환합니다. |
무효의 | 저장 (문자열 내보내기Dir) 이 기능을 저장된 모델로 내보냅니다. |
세션 | |
서명 | 서명 () 이 함수의 서명을 반환합니다. |
끈 | toString () |
상속된 메서드
공개 방법
공개 Tensor 호출 ( Tensor 텐서)
단일 입력 및 출력으로 함수를 호출합니다.
호출자는 모든 Tensor를 닫을 책임이 있습니다.
매개변수
텐서 | 입력 텐서 |
---|
보고
- 출력 텐서
던지기
IllegalArgumentException | 함수에 여러 개의 입력 또는 출력 매개변수가 정의되어 있는 경우 |
---|
공개 Map<String, Tensor > 호출 (Map<String, Tensor > 인수)
함수를 호출합니다.
호출자는 모든 Tensor를 닫을 책임이 있습니다.
매개변수
인수 | 함수에 입력을 전달할 텐서 목록(시그니처 이름으로 매핑됨) |
---|
보고
- 함수 실행으로 인한 출력 텐서(시그니처 이름으로 매핑됨)
던지기
IllegalArgumentException |
---|
공공 무효 닫기 ()
public static ConcreteFunction create ( 서명 서명, 세션 세션)
서명과 유효한 그래프 세션에서 함수를 만듭니다.
함수는 세션이나 해당 그래프를 소유하지 않습니다. 즉, 수명이 함수 범위를 넘어 확장될 수 있습니다. 따라서 함수 사용 후 함수를 닫을 필요가 없습니다. 예를 들어:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (Session s = new Session(g)) {
// Auto-closing the function just as an example but this is not required since it has
// no effect
try (ConcreteFunction f = ConcreteFunction.create(signature, s);
TFloat32 t = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Session s is still valid at this point
}
// Graph g is still valid at this point
}
}
매개변수
서명 | 생성할 함수의 서명 |
---|---|
세션 | 초기화된 그래프에 대한 유효한 세션 |
보고
- 새로운 기능
공개 정적 ConcreteFunction 생성 (Function<Ops, Signature > functionBuilder)
새 그래프를 작성하여 함수를 생성합니다.
functionBuilder
제공된 ERROR(/Ops)
인스턴스에서 함수 그래프를 초기화하고 실행 시 입력 텐서를 공급하고 출력 텐서를 가져오는 데 사용될 유효한 서명을 반환해야 합니다.
함수는 새 그래프와 결과 세션의 소유자가 됩니다. 따라서 함수가 삭제되면 모든 기본 리소스가 해제되도록 함수를 try-with-resources 블록으로 올바르게 묶어야 합니다. 예를 들어:
public class MyModel {
public static Signature addTwo(Ops tf) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
return Signature.builder("addTwo").input("x", input).output("y", output).build();
public static void main(String args[]) {
try (ConcreteFunction function = ConcreteFunction.create(MyModel::addTwo);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
}
}
}
}
매개변수
함수 빌더 | 함수 빌더 |
---|
보고
- 새로운 기능
public static ConcreteFunction create ( 서명 서명 , 그래프 그래프)
서명과 기존 그래프에서 함수를 만듭니다.
함수는 그래프를 실행하는 데 사용된 세션의 소유권을 유지하지만 그래프 자체는 유지하지 않습니다. 즉, 후자의 수명이 함수 범위를 넘어 확장될 수 있습니다. 예를 들어:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (ConcreteFunction f = ConcreteFunction.create(signature, g);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Graph g is still valid at this point
}
}
매개변수
서명 | 생성할 함수의 서명 |
---|---|
그래프 | 유효하고 초기화된 그래프 |
보고
- 새로운 기능
공개 무효 저장 (문자열 내보내기Dir)
이 기능을 저장된 모델로 내보냅니다.
이 방법은 SavedModel.exporter(exportDir).withFunction(this).export()
와 동일한 편리한 바로 가기입니다.
매개변수
내보내기 디렉터리 | 저장된 모델을 내보낼 디렉터리 |
---|
던지기
IO예외 | 저장된 모델이나 변수 상태를 디스크에 쓸 수 없는 경우 |
---|
공개 세션 세션 ()
이 함수를 호출할 때 그래프를 실행하는 데 사용된 세션을 반환합니다.
일반적으로 사용자는 함수 세션을 직접 처리할 필요가 없으며 대신 call(Map)
사용하여 그래프를 실행합니다. 그러나 어떤 경우에는 더 많은 실행 옵션을 허용하므로 세션에 직접 액세스해야 할 수도 있습니다.
보고
- 기능 세션