Можно ли создать нейросеть на чистом python? - Общение Python мододелов

Вопрос Можно ли создать нейросеть на чистом python?

Регистрация
24 Июл 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
Не давно посетил вопрос о том что бы создать нейросеть при помощи чистого Пайтона.Хочу узнать мнение более профессиональных программистов. Важно хочу сделать её обучаемой
 
Регистрация
28 Сен 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
Создать нейросеть на чистом Python вполне возможно, и это отличный способ глубже понять, как работают алгоритмы машинного обучения. Хотя библиотеки, такие как TensorFlow и PyTorch, сильно упрощают процесс, реализация нейросети с нуля поможет вам лучше понять архитектуру, математические принципы и этапы обучения.

### Шаги для создания нейросети на чистом Python:

1. **Определить архитектуру нейросети:**
- Количество входных нейронов (размер входных данных).
- Количество скрытых слоёв и нейронов в них.
- Количество выходных нейронов (зависит от задачи, например, 1 для регрессии или n для классификации на n классов).

2. **Инициализация весов:**
- Весовые коэффициенты (weights) и смещения (biases) должны быть инициализированы случайным образом или с использованием других методов (например, He или Xavier).

3. **Функция активации:**
- Реализуйте функции активации, такие как ReLU, сигмоиду или tanh, а также их производные для вычисления градиента.

4. **Прямое распространение (forward propagation):**
- Реализуйте функцию для вычисления выходного значения нейросети на основе входных данных.

5. **Функция потерь (loss function):**
- Определите функцию потерь, например, среднеквадратическую ошибку (MSE) или кросс-энтропию для классификационных задач.

6. **Обратное распространение (backpropagation):**
- Вычислите градиенты весов и смещений на основе правила цепочки.
- Обновите веса с использованием оптимизационных алгоритмов, например, стохастического градиентного спуска (SGD).

7. **Обучение нейросети:**
- Напишите цикл обучения, который будет повторять прямое и обратное распространение для каждого батча данных.

8. **Тестирование и валидация:**
- Проверьте обученную сеть на тестовых данных и оцените её точность.

### Пример: Простая однослойная нейросеть на Python import numpy as np

# Сигмоида и её производная
def sigmoid(x):
return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
return x * (1 - x)

# Инициализация данных
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) # Входные данные
y = np.array([[0], [1], [1], [0]]) # Целевые значения

# Инициализация весов
input_layer_neurons = 2
hidden_layer_neurons = 2
output_neurons = 1

weights_input_hidden = np.random.uniform(size=(input_layer_neurons, hidden_layer_neurons))
weights_hidden_output = np.random.uniform(size=(hidden_layer_neurons, output_neurons))
bias_hidden = np.random.uniform(size=(1, hidden_layer_neurons))
bias_output = np.random.uniform(size=(1, output_neurons))

# Гиперпараметры
learning_rate = 0.5
epochs = 10000

# Обучение
for epoch in range(epochs):
# Прямое распространение
hidden_layer_input = np.dot(X, weights_input_hidden) + bias_hidden
hidden_layer_output = sigmoid(hidden_layer_input)

output_layer_input = np.dot(hidden_layer_output, weights_hidden_output) + bias_output
predicted_output = sigmoid(output_layer_input)

# Вычисление ошибки
error = y - predicted_output

# Обратное распространение
d_predicted_output = error * sigmoid_derivative(predicted_output)
error_hidden_layer = d_predicted_output.dot(weights_hidden_output.T)
d_hidden_layer = error_hidden_layer * sigmoid_derivative(hidden_layer_output)

# Обновление весов и смещений
weights_hidden_output += hidden_layer_output.T.dot(d_predicted_output) * learning_rate
weights_input_hidden += X.T.dot(d_hidden_layer) * learning_rate
bias_output += np.sum(d_predicted_output, axis=0, keepdims=True) * learning_rate
bias_hidden += np.sum(d_hidden_layer, axis=0, keepdims=True) * learning_rate

if epoch % 1000 == 0:
print(f"Epoch {epoch} - Error: {np.mean(np.abs(error))}")

# Результат
print("Final predicted output:")
print(predicted_output)
 
Регистрация
15 Июл 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
вполне возможно, но это будет труднее, чем с библиотеками. Не забывай, что библиотеки - это уже написанные классы/функции/методы и т.д, которые ты можешь использовать в коде
 
Регистрация
6 Авг 2013
Сообщения
73
Репутация
0
Спасибо
1
Монет
0
Можно ли создать нейросеть на чистом python?Можно создать нейросеть на чистом python!
Но не обольщайся, и не думай что ХОТЯ БЫ ГОДА обучения программированию тебя приведут к тому что ты реально что-то сам напишешь
 
Регистрация
19 Окт 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
PyTorch вроде существует, но часть модулей написаны на Плюсах
 
Регистрация
26 Сен 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
В нейросетях низкокровневые потроха крутятся на CИ или С++. А Питон это сверхвысокоуровневый язык
 
Регистрация
30 Окт 2013
Сообщения
76
Репутация
-3
Спасибо
0
Монет
0
Можно, но зачем? Уже существуют предобученные модели использующие готовый torch, так что только ради интереса если
 
Сверху Снизу