Ваш код уже содержит структуру модели, которая принимает несколько параметров, но он не полностью универсален для любых входных и выходных параметров. Чтобы сделать его более адаптивным, вы можете изменить класс `MyModel` так, чтобы он поддерживал произвольные размеры входных и выходных данных.
Ниже приведен пример кода, который делает модель более гибкой, позволяет ей обрабатывать любые входные и выходные данные:
```python
import torch
import torch.nn as nn
class MyModel(nn.Module):
def __init__(self, inp, out, num_hidden_layers=9):
super(MyModel, self).__init__()
layers = []
# Добавляем скрытые слои
for i in range(num_hidden_layers):
layers.append(nn.Linear(inp, inp - 1))
layers.append(nn.ReLU())
inp -= 1
# Добавляем выходной слой
layers.append(nn.Linear(inp, out))
self.layers = nn.ModuleList(layers)
def forward(self, x):
for layer in self.layers:
x = layer(x)
return x
# Пример использования модели с произвольными входными и выходными параметрами
input_size = 20 # размер входных данных
output_size = 10 # размер выходных данных
model = MyModel(inp=input_size, out=output_size)
# Тестирование модели на случайном входе
test_input = torch.rand((1, input_size)) # один пример с размером входа 20
output = model(test_input)
print(output)
```
### Объяснение изменений:
1. **Универсальность параметров**: Теперь модель принимает параметры `inp` и `out`, которые можно изменять при создании экземпляра модели. Это позволяет настраивать модель для обработки любых входных и выходных данных.
2. **Количество скрытых слоев**: Я добавил параметр `num_hidden_layers`, чтобы вы могли легко настраивать количество скрытых слоев модели.
3. **Тестирование**: Я добавил пример, показывающий, как протестировать модель с произвольным входом, чтобы убедиться, что она корректно обрабатывает заданные параметры.
Теперь вы можете легко адаптировать вашу модель для любых конкретных задач, изменяя размер входа, выход и количество скрытых слоев.