Skip to content
This repository was archived by the owner on Mar 17, 2026. It is now read-only.
This repository was archived by the owner on Mar 17, 2026. It is now read-only.

TensorFlow 2.3 SavedModel: Operation Not Found #282

Description

@justnoxx

Hello!

After 0.16 version has been released we decided to switch to TF2.

The issue is that it can't find the op by name even if this OP is present in the graph (checked with tensorboard and dumped model).

Could someone please help me or show me where I am wrong? Or it is better for now go back to TF1?

My system:

  1. macOS 10.15.7
  2. cargo 1.45.0
  3. tensorflow: 2.3.0
  4. tensorflow-rust: 1.16.1

To reproduce it, please, use the examples.

This code produces the simple Sequential model using Keras:

importtensorflowastf;
importtensorboard;
fromtensorflow.pythonimportkerasfromtensorflow.kerasimportSequentialfromtensorflow.keras.layersimportDenseimportjson;
importnumpyasnp;
tensorboard_callback=keras.callbacks.TensorBoard(log_dir="/tmp/logs")
classifier=Sequential()
classifier.add(Dense(5, activation='relu', kernel_initializer='random_normal', name="test_in", input_dim=5))
classifier.add(Dense(5, activation='relu'))
classifier.add(Dense(1, activation='sigmoid', name="test_out"))
classifier.compile(optimizer='adam',loss='binary_crossentropy', metrics= ['accuracy'])
classifier.fit([[0.1, 0.2, 0.3, 0.4, 0.5]], [[1]], batch_size=1, epochs=1, callbacks=[tensorboard_callback]);
result=classifier.predict([[0.1, 0.2, 0.3, 0.4, 0.5]])
print(result);
classifier.summary();
forlayerinclassifier.layers:
print(layer.name)
classifier.save('/tmp/saved_model', save_format='tf')

This rust code tries to load this model and calculate something (please, note that I also tried test_in as input name, the result is the same):

use tensorflow::{SessionRunArgs,Graph,Session,SessionOptions,Tensor};fnmain(){let network_path = "/tmp/saved_model";let v:Vec<f32> = vec![0.1,0.2,0.3,0.4,0.5];let input_layer = "test_in_input";let output_layer = "test_out_output";let tensor = vector_to_tensor(&v);letmut graph = Graph::new();let session = Session::from_saved_model(&SessionOptions::new(),&["serve"],&mut graph,
network_path,).unwrap();letmut args = SessionRunArgs::new();let input_op = &graph.operation_by_name_required(input_layer).unwrap();
args.add_feed(&input_op,0,&tensor);let out = args.request_fetch(&graph.operation_by_name_required(output_layer).unwrap(),0);let result = session.run(&mut args);if result.is_err(){panic!("Error occured during calculations: {:?}", result);}let out_res:f32 = args.fetch(out).unwrap()[0];println!("Results: {:?}", out_res);}pubfnvector_to_tensor(v:&Vec<f32>) -> Tensor<f32>{let dimension = v.len();let tensor = Tensor::new(&[1, dimension asu64]).with_values(&v[..]).unwrap();return tensor;}

But it returns the following error:

2020-11-10 23:27:02.348764: I tensorflow/cc/saved_model/reader.cc:31] Reading SavedModel from: /tmp/saved_model
2020-11-10 23:27:02.351523: I tensorflow/cc/saved_model/reader.cc:54] Reading meta graph with tags { serve }
2020-11-10 23:27:02.353879: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-11-10 23:27:02.370771: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7fe9b469d6f0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-11-10 23:27:02.370812: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
2020-11-10 23:27:02.389267: I tensorflow/cc/saved_model/loader.cc:202] Restoring SavedModel bundle.
2020-11-10 23:27:02.466215: I tensorflow/cc/saved_model/loader.cc:151] Running initialization op on SavedModel bundle at path: /tmp/saved_model
2020-11-10 23:27:02.477538: I tensorflow/cc/saved_model/loader.cc:311] SavedModel load for tags { serve }; Status: success. Took 128781 microseconds.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: {inner:0x7fe9d5b08c00, Unavailable: Operation "test_in_input" not found}', src/main.rs:21:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions