首页 > 解决方案 > 在 Keras 中显示“y”的预测值和对应的实际“x”值

问题描述

我正在尝试编写一个神经网络,它使用 100 个沿 ay = sin(x) 图均匀分布的数据点,介于 0 和 (5/2)pi 之间。所以 x 值从 0 到 7.854,相应的 y 值在 1 和 -1 之间波动。

我已将数据分成训练点和验证点,它似乎已经正确训练,但是当我尝试打印“测试”数据时,无论我使用多少神经元、时期,它都是 100% 正确的。我认为它只是显示实际值,没有预测。

我认为我在代码的最终预测部分一定做错了,但我不确定如何通过网络显示相应 x 值的 y 预测值。任何帮助将不胜感激!

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation
import pandas as pd
import io
import os
import requests
import numpy as np
from sklearn import metrics
from sklearn.model_selection import train_test_split
from tensorflow.keras.callbacks import EarlyStopping

df = pd.read_csv("C:\\Users\\Dan\\Desktop\\UNI\\PROJECT\\y_sinx_values.csv")

x = df['x'].values 
y = df['y'].values

# Split into training and validation sets
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=42)

model = Sequential()
model.add(Dense(100, input_shape = (1,), activation='relu'))
model.add(Dense(50, activation='relu'))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer = 'adam')

monitor = EarlyStopping(monitor='val_loss', min_delta=1e-3, patience=1, verbose=1, mode='auto', restore_best_weights=True)
model.fit(x_train,y_train,validation_data=(x_test,y_test),callbacks=[monitor],verbose=2, epochs=2)

pred = model.predict(x_test)
score = np.sqrt(metrics.mean_squared_error(pred,y_test))
print(f"Final score (RMSE): {score}")

# Sample predictions
for i in range(25):
    print(f"{i+1}. x: {x_test[i]}, y: {y_test[i]}")

标签: pythontensorflowmachine-learningkerasneural-network

解决方案


# Sample predictions
for i in range(25):
    print(f"{i+1}. x: {x_test[i]}, y: {y_test[i]}")

是的,您正在打印输入的测试数据。你很可能想要这样的东西:

# Sample predictions
for i in range(25):
    print(f"{i+1}. x: {x_test[i]}, y: {pred[i]}")

注意y_test[i]已更改为pred[i]


推荐阅读