I have a Tensorflow model (.keras) that was made in a conda virtual environment for 3.11 and it works perfectly fine when run locally. It does not run in Render and gives me an error. The default Python version in Render is 3.11, so the versions are exactly the same. I am getting this error when running main.py in Render:
Traceback (most recent call last):
File "/opt/render/project/src/backend/main.py", line 32, in <module>
model = tf.keras.models.load_model(MODEL_PATH)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/keras/src/saving/saving_api.py", line 230, in load_model
return saving_lib.load_model(
^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/keras/src/saving/saving_lib.py", line 275, in load_model
raise e
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/keras/src/saving/saving_lib.py", line 263, in load_model
_load_state(
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/keras/src/saving/saving_lib.py", line 456, in _load_state
_load_container_state(
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/keras/src/saving/saving_lib.py", line 513, in _load_container_state
_load_state(
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/keras/src/saving/saving_lib.py", line 425, in _load_state
trackable.load_own_variables(weights_store.get(inner_path))
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/keras/src/engine/base_layer.py", line 3539, in load_own_variables
raise ValueError(
ValueError: Layer 'conv2d' expected 2 variables, but received 0 variables during loading. Expected: ['conv2d/kernel:0', 'conv2d/bias:0']
Things I've tried:
- Deleted local folder, re-cloned git, re-initialized virtual env, reinstalled requirements, ran main.py and it still worked locally.
Things I've checked:
- The model works correctly when run locally, no files have been changed.
- The model path is correct.
- The conda virtual environment and Render python versions are the same (3.11)