import numpy as np
import matplotlib.pyplot as plt x = np.linspace(-5, 5, 100) print(x[:10]) y = x ** 2 print("Размер x:", x.shape)
print("Размер y:", y.shape) plt.plot(x, y, 'b-', linewidth=2, label='x^2')
plt.xlabel('x')
plt.ylabel('x^2')
plt.title('Что должна выучить нейросеть')
plt.legend()
plt.grid(True)
plt.show() from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense model = Sequential() model.add(Dense(10, input_dim=1, activation='relu')) model.add(Dense(1)) model.summary() mse = mean((y_true - y_pred)^2) model.compile(loss='mse', optimizer='adam') history = model.fit(x, y, epochs=100, verbose=1) Epoch 1/100
4/4 [==============================] - 0s 2ms/step - loss: 210.1234
Epoch 2/100
4/4 [==============================] - 0s 2ms/step - loss: 190.4567
... print("Финальное значение потерь:", history.history['loss'][-1]) plt.plot(history.history['loss'])
plt.xlabel('Эпоха')
plt.ylabel('Потери (MSE)')
plt.title('Обучение модели')
plt.grid(True)
plt.show() y_pred = model.predict(x) plt.plot(x, y, 'b-', label='Истинная функция (x^2)')
plt.plot(x, y_pred, 'r--', label='Предсказание модели')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Сравнение истины и предсказания после 100 эпох')
plt.legend()
plt.grid(True)
plt.show() model2 = Sequential()
model2.add(Dense(10, input_dim=1, activation='relu'))
model2.add(Dense(1))
model2.compile(loss='mse', optimizer='adam')
history2 = model2.fit(x, y, epochs=1000, verbose=0) y_pred2 = model2.predict(x)
plt.plot(x, y, 'b-', label='Истина')
plt.plot(x, y_pred2, 'r--', label='Предсказание (1000 эпох)')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show() model3 = Sequential()
model3.add(Dense(10, input_dim=1, activation='relu'))
model3.add(Dense(10, activation='relu')) # второй скрытый слой
model3.add(Dense(1))
model3.compile(loss='mse', optimizer='adam')
history3 = model3.fit(x, y, epochs=1000, verbose=0) y_pred3 = model3.predict(x)
plt.plot(x, y, 'b-', label='Истина')
plt.plot(x, y_pred3, 'r--', label='Предсказание (2 слоя, 1000 эпох)')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show() X_new = np.array([-2, -1, 0, 1, 2, 3]).reshape(-1, 1)
y_true = X_new.flatten() ** 2
y_pred_new = model2.predict(X_new)
print(" x | Истина | Предсказание | Разница")
print("---|------------|---------------------|-------------")
for i in range(len(X_new)):
diff = abs(y_true[i] - y_pred_new[i, 0])
print(f"{X_new[i,0]:2} | {y_true[i]:6} | {y_pred_new[i,0]:10.3f} | {diff:.3f}") x | Истина | Предсказание | Разница
---|-----------|----------------------|--------
-2 | 4.0 | 4.124 | 0.124
-1 | 1.0 | 1.067 | 0.067
0 | 0.0 | 0.089 | 0.089
1 | 1.0 | 0.934 | 0.066
2 | 4.0 | 4.087 | 0.087
3 | 9.0 | 9.213 | 0.213