mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-14 11:54:01 +08:00
Revert "Call load_state_dict on model classes (#1499)"
This reverts commit 93359b131e.
This commit is contained in:
1 parent
93359b131e
commit
19e1d33132
2 files changed
+1
-85
No files matched your search
@@ -21,7 +21,7 @@ import typing
|
||||
from abc import abstractmethod
|
||||
from dataclasses import dataclass, field
|
||||
from time import time
|
||||
from typing import Any, Dict, List, Mapping, Optional, Type, Union, cast
|
||||
from typing import Any, Dict, List, Optional, Type, Union, cast
|
||||
|
||||
import torch
|
||||
import torch.distributed as dist
|
||||
@@ -105,16 +105,6 @@ class Pipeline(nn.Module):
|
||||
"""Returns the device that the model is on."""
|
||||
return self.model.device
|
||||
|
||||
def load_state_dict(self, state_dict: Mapping[str, Any], strict: bool = True):
|
||||
if "model" in state_dict:
|
||||
tmp_state_dict = dict(state_dict)
|
||||
model_state = tmp_state_dict.pop("model")
|
||||
self.model.load_state_dict(model_state, strict=strict)
|
||||
|
||||
# Model will be missing from the dict; therefore strict=False here.
|
||||
strict = False
|
||||
super().load_state_dict(state_dict, strict=strict)
|
||||
|
||||
@profiler.time_function
|
||||
def get_train_loss_dict(self, step: int):
|
||||
"""This function gets your training loss dict. This will be responsible for
|
||||
@@ -372,10 +362,7 @@ class VanillaPipeline(Pipeline):
|
||||
"""
|
||||
state = {key.replace("module.", ""): value for key, value in loaded_state.items()}
|
||||
self._model.update_to_step(step)
|
||||
model_state = state.pop("model", {})
|
||||
self.model.load_state_dict(model_state, strict=True)
|
||||
self.load_state_dict(state, strict=False)
|
||||
state["model"] = model_state
|
||||
|
||||
def get_training_callbacks(
|
||||
self, training_callback_attributes: TrainingCallbackAttributes
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
"""
|
||||
Test pipeline
|
||||
"""
|
||||
from pathlib import Path
|
||||
|
||||
# pylint: disable=too-few-public-methods
|
||||
# pylint: disable=no-self-use
|
||||
# pylint: disable=missing-class-docstring
|
||||
# pylint: disable=unused-argument
|
||||
# pylint: disable=abstract-method
|
||||
import torch
|
||||
|
||||
from nerfstudio.cameras.cameras import Cameras
|
||||
from nerfstudio.data.datasets.base_dataset import DataparserOutputs, InputDataset
|
||||
from nerfstudio.pipelines.base_pipeline import (
|
||||
Model,
|
||||
ModelConfig,
|
||||
VanillaDataManagerConfig,
|
||||
VanillaPipeline,
|
||||
VanillaPipelineConfig,
|
||||
)
|
||||
|
||||
|
||||
class MockedDataManager:
|
||||
"""Mocked data manager"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
num_images = 0
|
||||
self.train_dataset = InputDataset(
|
||||
DataparserOutputs(
|
||||
image_filenames=[Path("filename.png")] * num_images,
|
||||
cameras=Cameras(
|
||||
camera_to_worlds=torch.ones([num_images, 3, 4], dtype=torch.float32),
|
||||
fx=1.0,
|
||||
fy=1.0,
|
||||
cx=1.0,
|
||||
cy=1.0,
|
||||
width=2,
|
||||
height=2,
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
def to(self, *args, **kwargs):
|
||||
"Mocked to"
|
||||
return self
|
||||
|
||||
|
||||
def test_load_state_dict():
|
||||
"""Test pipeline load_state_dict calls model's load_state_dict"""
|
||||
was_called = False
|
||||
|
||||
class MockedModel(Model): #
|
||||
"""Mocked model"""
|
||||
|
||||
def load_state_dict(self, *args, strict=True):
|
||||
"""Mocked load_state_dict"""
|
||||
nonlocal was_called
|
||||
was_called = True
|
||||
assert strict
|
||||
|
||||
config = VanillaPipelineConfig(
|
||||
datamanager=VanillaDataManagerConfig(
|
||||
_target=MockedDataManager,
|
||||
),
|
||||
model=ModelConfig(_target=MockedModel),
|
||||
)
|
||||
pipeline = VanillaPipeline(config, "cpu")
|
||||
state_dict = pipeline.state_dict()
|
||||
pipeline.load_pipeline(state_dict, 0)
|
||||
assert was_called
|
||||
Reference in new issue
Block a user