So I’m building a very simple model using tensorflow that gives x+1 as output (prediction). I’ll deploy this model on android application so I convert it to tflite format. For Building model
import tensorflow as tf
# Create a simple Keras model.      
x = [1,2,3,4,5,6,7,8,9,10]
y = [2,3,4,5,6,7,8,9,10,11]

model = tf.keras.models.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(x, y, epochs=50)

path_file = 'saved_model/hello_world_tensorflow'
tf.saved_model.save(model, path_file)

import pathlib
# Convert the model.
converter = tf.lite.TFLiteConverter.from_saved_model(path_file)
tflite_model = converter.convert()
tflite_model_file = pathlib.Path('model1.tflite')
tflite_model_file.write_bytes(tflite_model)

Using model in Python code for getting output
import numpy as np
import tensorflow as tf

# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="model1.tflite")
interpreter.allocate_tensors()

# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Test model on random input data.
input_shape = input_details[0]['shape']
print(input_shape)
input_data = np.array([[3]], dtype=np.float32) # 3 is the input here
interpreter.set_tensor(input_details[0]['index'], input_data)

interpreter.invoke()

# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data,input_data)

Using model in Java Code (MainActivity.java File ) android
package ar.labs.androidml;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import org.tensorflow.lite.DataType;
import org.tensorflow.lite.support.tensorbuffer.TensorBuffer;

import java.nio.ByteBuffer;

import ar.labs.androidml.ml.Model1;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn= findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try{
                    EditText inputEditText;

                    inputEditText = findViewById(R.id.editTextNumberDecimal);
                    Float data= Float.valueOf(inputEditText.getText().toString());
                    ByteBuffer byteBuffer= ByteBuffer.allocateDirect(1*4);
                    byteBuffer.putFloat(data);

                    Model1 model = Model1.newInstance(getApplicationContext());

                    // Creates inputs for reference.
                    TensorBuffer inputFeature0 = TensorBuffer.createFixedSize(new int[]{1, 1}, DataType.FLOAT32);
                    inputFeature0.loadBuffer(byteBuffer);

                    // Runs model inference and gets result.
                    Model1.Outputs outputs = model.process(inputFeature0);
                    TensorBuffer outputFeature0 = outputs.getOutputFeature0AsTensorBuffer();

                    // Releases model resources if no longer used.
                    TextView tv= findViewById(R.id.textView);
                    float[] data1=outputFeature0.getFloatArray();

                    tv.setText(outputFeature0.getDataType().toString());
                    tv.setText(String.valueOf(data1[0]));


                    model.close();

                }
                catch (Exception e)
                {
                    Toast.makeText(getApplicationContext(),"Issue...",Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

Python code:

Input → Output
1-> 1.4467…
2 → 2.5395…
*2.1->2.6488…
*2.11->2.6597
3 → 3.6323…

Java Code

Input → Output
1 → 0.3540…
2 → 0.3540…
2.1 → 2.967…E23
2.11 → 0.39083…
41 → 0.3540…

Why are outputs from Python code and Java code are so different for same input?
Why the outputs are behaving this way in java file like returning a constant value for most cases?
Please help me fix.