You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
from bioimageio.core import load_description_and_test
from bioimageio.core.model_adapters._pytorch_model_adapter import PytorchModelAdapter
from bioimageio.spec import InvalidDescr
model_id = "nucleisegmentationboundarymodel_pytorch_state_dict.zip"
model_description = load_description_and_test(model_id)
if isinstance(model_description, InvalidDescr):
raise Exception("Invalid model description")
adapter = PytorchModelAdapter(
outputs=model_description.outputs,
weights=model_description.weights.pytorch_state_dict,
devices=None,
)
print(adapter._network)
Get this traceback:
Traceback (most recent call last):
File "/Users/pattonw/Work/Packages/dacapo/.venv/lib/python3.11/site-packages/torch/serialization.py", line 757, in _check_seekable
f.seek(f.tell())
^^^^^^
AttributeError: 'Path' object has no attribute 'seek'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/pattonw/Work/Packages/dacapo/scratch/scratch3.py", line 14, in <module>
adapter = PytorchModelAdapter(
^^^^^^^^^^^^^^^^^^^^
File "/Users/pattonw/Work/Packages/dacapo/.venv/lib/python3.11/site-packages/bioimageio/core/model_adapters/_pytorch_model_adapter.py", line 44, in __init__
state: Any = torch.load(
^^^^^^^^^^^
File "/Users/pattonw/Work/Packages/dacapo/.venv/lib/python3.11/site-packages/torch/serialization.py", line 1319, in load
with _open_file_like(f, "rb") as opened_file:
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/pattonw/Work/Packages/dacapo/.venv/lib/python3.11/site-packages/torch/serialization.py", line 664, in _open_file_like
return _open_buffer_reader(name_or_buffer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/pattonw/Work/Packages/dacapo/.venv/lib/python3.11/site-packages/torch/serialization.py", line 649, in __init__
_check_seekable(buffer)
File "/Users/pattonw/Work/Packages/dacapo/.venv/lib/python3.11/site-packages/torch/serialization.py", line 760, in _check_seekable
raise_err_msg(["seek", "tell"], e)
File "/Users/pattonw/Work/Packages/dacapo/.venv/lib/python3.11/site-packages/torch/serialization.py", line 753, in raise_err_msg
raise type(e)(msg)
AttributeError: 'Path' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead.
approach 2/3
This same code works just fine if I use the model name "affable-shark" instead of the path to the downloaded zip of the same model.
It also works if I run twice and the second time use "nucleisegmentationboundarymodel_pytorch_state_dict.zip.unzip" as the model_id.
In those cases I get the model architecture that looks something like this:
Hi @pattonw
Unfortunately the current latest bioimageio.core release has a regression that makes loading from zip files fail.
I'm working on getting the patched next release out asap.
Loading "affable-shark" works as it never downloads and loads from a zip file, but downloads each file on-demand (and caches them separately).
Loading "nucleisegmentationboundarymodel_pytorch_state_dict.zip.unzip" works for the same reason (it's not a zip anymore).
(This would not be interpreted as a model id btw, but as a local path)
Oh ok, makes sense. For now I just have a workaround of anytime I'm trying to read a zipped model, I just unzip first and then pass it to load_description_and_test, but I'll keep an eye out for the next release so I can remove my hacky solution
I want to have direct access to the
torch.nn.Module
of a model from the model zoo (if available), but having difficulty accessing it.Approach 1
pip install bioimageio.core>=0.7
approach 2/3
This same code works just fine if I use the model name "affable-shark" instead of the path to the downloaded zip of the same model.
It also works if I run twice and the second time use "nucleisegmentationboundarymodel_pytorch_state_dict.zip.unzip" as the model_id.
In those cases I get the model architecture that looks something like this:
The text was updated successfully, but these errors were encountered: