PVNet 5.0.19__tar.gz → 5.0.21__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pvnet-5.0.19 → pvnet-5.0.21}/PKG-INFO +3 -1
- {pvnet-5.0.19 → pvnet-5.0.21}/PVNet.egg-info/PKG-INFO +3 -1
- {pvnet-5.0.19 → pvnet-5.0.21}/README.md +2 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/encoders/encoders3d.py +22 -10
- {pvnet-5.0.19 → pvnet-5.0.21}/LICENSE +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/PVNet.egg-info/SOURCES.txt +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/PVNet.egg-info/dependency_links.txt +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/PVNet.egg-info/requires.txt +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/PVNet.egg-info/top_level.txt +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/data/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/data/base_datamodule.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/data/site_datamodule.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/data/uk_regional_datamodule.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/load_model.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/base_model.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/ensemble.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/basic_blocks.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/encoders/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/encoders/basic_blocks.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/late_fusion.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/linear_networks/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/linear_networks/basic_blocks.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/linear_networks/networks.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/site_encoders/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/site_encoders/basic_blocks.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/models/late_fusion/site_encoders/encoders.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/optimizers.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/training/__init__.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/training/lightning_module.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/training/plots.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/training/train.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pvnet/utils.py +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/pyproject.toml +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/setup.cfg +0 -0
- {pvnet-5.0.19 → pvnet-5.0.21}/tests/test_end2end.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PVNet
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.21
|
|
4
4
|
Summary: PVNet
|
|
5
5
|
Author-email: Peter Dudfield <info@openclimatefix.org>
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -172,6 +172,8 @@ satellite:
|
|
|
172
172
|
|
|
173
173
|
`ocf-data-sampler` is currently set up to use 11 channels from the satellite data (the 12th, HRV, is not used).
|
|
174
174
|
|
|
175
|
+
⚠️ NB: Our publicly accessible satellite data is currently saved with a blosc2 compressor, which is not supported by the tensorstore backend PVNet relies on now. We are in the process of updating this; for now, the paths above cannot be used with this codebase.
|
|
176
|
+
|
|
175
177
|
### Training PVNet
|
|
176
178
|
|
|
177
179
|
How PVNet is run is determined by the configuration files. The example configs in `PVNet/configs.example` work with **streamed_samples** using `datamodule/streamed_samples.yaml`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PVNet
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.21
|
|
4
4
|
Summary: PVNet
|
|
5
5
|
Author-email: Peter Dudfield <info@openclimatefix.org>
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -172,6 +172,8 @@ satellite:
|
|
|
172
172
|
|
|
173
173
|
`ocf-data-sampler` is currently set up to use 11 channels from the satellite data (the 12th, HRV, is not used).
|
|
174
174
|
|
|
175
|
+
⚠️ NB: Our publicly accessible satellite data is currently saved with a blosc2 compressor, which is not supported by the tensorstore backend PVNet relies on now. We are in the process of updating this; for now, the paths above cannot be used with this codebase.
|
|
176
|
+
|
|
175
177
|
### Training PVNet
|
|
176
178
|
|
|
177
179
|
How PVNet is run is determined by the configuration files. The example configs in `PVNet/configs.example` work with **streamed_samples** using `datamodule/streamed_samples.yaml`.
|
|
@@ -143,6 +143,8 @@ satellite:
|
|
|
143
143
|
|
|
144
144
|
`ocf-data-sampler` is currently set up to use 11 channels from the satellite data (the 12th, HRV, is not used).
|
|
145
145
|
|
|
146
|
+
⚠️ NB: Our publicly accessible satellite data is currently saved with a blosc2 compressor, which is not supported by the tensorstore backend PVNet relies on now. We are in the process of updating this; for now, the paths above cannot be used with this codebase.
|
|
147
|
+
|
|
146
148
|
### Training PVNet
|
|
147
149
|
|
|
148
150
|
How PVNet is run is determined by the configuration files. The example configs in `PVNet/configs.example` work with **streamed_samples** using `datamodule/streamed_samples.yaml`.
|
|
@@ -25,6 +25,7 @@ class DefaultPVNet(AbstractNWPSatelliteEncoder):
|
|
|
25
25
|
spatial_kernel_size: int = 3,
|
|
26
26
|
temporal_kernel_size: int = 3,
|
|
27
27
|
padding: int | tuple[int, ...] = (1, 0, 0),
|
|
28
|
+
stride: int | tuple[int, ...] = 1,
|
|
28
29
|
):
|
|
29
30
|
"""This is the original encoding module used in PVNet, with a few minor tweaks.
|
|
30
31
|
|
|
@@ -39,29 +40,38 @@ class DefaultPVNet(AbstractNWPSatelliteEncoder):
|
|
|
39
40
|
spatial_kernel_size: The spatial size of the kernel used in the conv3d layers.
|
|
40
41
|
temporal_kernel_size: The temporal size of the kernel used in the conv3d layers.
|
|
41
42
|
padding: The padding used in the conv3d layers. If an int, the same padding
|
|
42
|
-
is used in all dimensions
|
|
43
|
+
is used in all dimensions. The dimensions are (time, space, space)
|
|
44
|
+
stride: The stride used in conv3d layers. If an int, the same stride is used
|
|
45
|
+
in all dimensions
|
|
43
46
|
"""
|
|
44
47
|
|
|
45
48
|
super().__init__(sequence_length, image_size_pixels, in_channels, out_features)
|
|
46
49
|
|
|
47
50
|
if isinstance(padding, int):
|
|
48
51
|
padding = (padding, padding, padding)
|
|
52
|
+
|
|
53
|
+
if isinstance(stride, int):
|
|
54
|
+
stride = (stride, stride, stride)
|
|
49
55
|
|
|
50
56
|
# Check that the output shape of the convolutional layers will be at least 1x1
|
|
51
|
-
cnn_spatial_output_size =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
)
|
|
57
|
+
cnn_spatial_output_size = image_size_pixels
|
|
58
|
+
|
|
59
|
+
for _ in range(number_of_conv3d_layers):
|
|
60
|
+
cnn_spatial_output_size = (
|
|
61
|
+
cnn_spatial_output_size - spatial_kernel_size + 2 * padding[1]
|
|
62
|
+
) // stride[1] + 1
|
|
63
|
+
|
|
59
64
|
if not (cnn_spatial_output_size >= 1):
|
|
60
65
|
raise ValueError(
|
|
61
66
|
f"cannot use this many conv3d layers ({number_of_conv3d_layers}) with this input "
|
|
62
67
|
f"spatial size ({image_size_pixels})"
|
|
63
68
|
)
|
|
64
69
|
|
|
70
|
+
cnn_sequence_length = (
|
|
71
|
+
sequence_length
|
|
72
|
+
- ((temporal_kernel_size - 2 * padding[0]) - 1) * number_of_conv3d_layers
|
|
73
|
+
)
|
|
74
|
+
|
|
65
75
|
conv_layers = []
|
|
66
76
|
|
|
67
77
|
conv_layers += [
|
|
@@ -70,16 +80,18 @@ class DefaultPVNet(AbstractNWPSatelliteEncoder):
|
|
|
70
80
|
out_channels=conv3d_channels,
|
|
71
81
|
kernel_size=(temporal_kernel_size, spatial_kernel_size, spatial_kernel_size),
|
|
72
82
|
padding=padding,
|
|
83
|
+
stride=stride,
|
|
73
84
|
),
|
|
74
85
|
nn.ELU(),
|
|
75
86
|
]
|
|
76
|
-
for
|
|
87
|
+
for _ in range(0, number_of_conv3d_layers - 1):
|
|
77
88
|
conv_layers += [
|
|
78
89
|
nn.Conv3d(
|
|
79
90
|
in_channels=conv3d_channels,
|
|
80
91
|
out_channels=conv3d_channels,
|
|
81
92
|
kernel_size=(temporal_kernel_size, spatial_kernel_size, spatial_kernel_size),
|
|
82
93
|
padding=padding,
|
|
94
|
+
stride=stride,
|
|
83
95
|
),
|
|
84
96
|
nn.ELU(),
|
|
85
97
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|