gpt4 book ai didi

python - Keras 预测每次返回相同的结果

转载 作者:行者123 更新时间:2023-11-30 09:32:03 27 4
gpt4 key购买 nike

我是 Keras 新手。刚刚在本地启动了一个来自 here 的示例。示例数据运行良好。然后我稍微修改了代码以适应我的数据(在我的数据文件结果列中先行)。然后,当我再次运行并尝试预测输入时,它总是为每个输入行返回相同的结果 - [1. 0.], [1. 0.] ...。这是我的代码:

import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import EarlyStopping
from keras.utils import to_categorical

#read in training data
train_df_2 = pd.read_csv('/Users/my_user/python-workspace/Deep-Learning-in-Keras-Tutorial/data/my_data.csv')

#view data structure
train_df_2.head()

#create a dataframe with all training data except the target column
train_X_2 = train_df_2.drop(columns=['result'])

target = train_df_2[['result']]

#check that the target variable has been removed
train_X_2.head()

#one-hot encode target column
train_y_2 = to_categorical(train_df_2.result)

#create model
model_2 = Sequential()

#get number of columns in training data
n_cols_2 = train_X_2.shape[1]

#add layers to model
model_2.add(Dense(25, activation='relu', input_shape=(n_cols_2,)))
model_2.add(Dense(25, activation='relu'))
model_2.add(Dense(2, activation='softmax'))
# model_2.add(Dense(10, input_dim=n_cols_2, kernel_initializer='normal', activation='relu'))
# model_2.add(Dense(25, activation='relu'))
# model_2.add(Dense(2, activation='softmax'))

#compile model using accuracy to measure model performance
model_2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

#set early stopping monitor so the model stops training when it won't improve anymore
early_stopping_monitor = EarlyStopping(patience=3)

#train model
model_2.fit(train_X_2, train_y_2, epochs=30, validation_split=0.1, callbacks=[early_stopping_monitor])

p = model_2.predict(train_X_2, verbose=0, batch_size=1)
print(p)

我的输入数据示例:

result,i1,i2,i3,i4
0,1770,2390,1750,1816
1,1675,2540,2029,1940
1,1770,2384,1765,1770
0,1690,2485,2075,1900
0,1680,2465,2050,1920
0,1770,2395,1744,1795
1,1675,2490,2050,1915
0,1768,2400,1740,1790
0,1675,2525,2050,1910
.... (total 2312 rows)

为什么总是返回相同的结果[1. 0.] 每行?我预计至少有一行 [0. 1.]。我做错了什么?

最佳答案

您尚未标准化输入数据。因此,它会阻碍训练过程并破坏梯度更新,并且您的模型可能什么也学不到。尝试使用类似 sklearn.preprocessing.StandardScaler 对其进行标准化。或者您也可以手动执行此操作:

mean = train_X_2.mean(axis=0)
train_X_2 -= mean
std = train_X_2.std(axis=0)
train_X_2 /= std

关于python - Keras 预测每次返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53869349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com