Когда вы нормализуете данные для нейронной сети, очень важно использовать те же параметры (среднее значение `mean` и стандартное отклонение `std`) для нормализации как обучающего, так и тестового (или новых) наборов данных. Это обеспечивает согласованность в масштабировании признаков и позволяет модели правильно интерпретировать новые данные.
Когда вы обучаете модель на нормализованных данных, она учится воспринимать определенные шаблоны и веса, адаптированные к этому масштабу. Если бы вы нормализовали новые данные с использованием других параметров, то масштаб признаков в новых данных мог бы отличаться от того, который видела модель во время тренировки, что может привести к неверным предсказаниям.
Процесс должен выглядеть следующим образом:
1. Вычисляете среднее значение и стандартное отклонение на обучающем наборе данных:
```python
mean = train_data.mean(axis=0)
std = train_data.std(axis=0)
```
2. Нормализуете обучающие данные с использованием этих параметров:
```python
train_data -= mean
train_data /= std
```
3. Сохраняете значения `mean` и `std`.
4. Нормализуете тестовые или новые данные, используя сохраненные значения `mean` и `std` (не вычисляете их заново на тестовых данных):
```python
test_data -= mean
test_data /= std
```
Это гарантирует, что новые данные будут отображаться в той же области пространства признаков, что и обучающие данные.
Если вы нормализуете каждый набор данных отдельно с его собственными параметрами, то модель будет работать с разными диапазонами для каждого из наборов данных, что может серьезно ухудшить её производительность и способность к обобщению.
В заключение, вы должны всегда использовать параметры нормализации (`mean` и `std`), полученные из обучающего набора данных, для всех последующих преобразований данных перед предсказаниями.