[英]Data Normalization in Tensorflow Model
我有一個我一直在使用的 Tensorflow 回歸 model。 我對 model 進行了很好的調整,並在訓練時取得了不錯的成績。 然而,當我去評估結果是可怕的。 我做了一些研究,發現我沒有規范化我的測試功能和標簽,所以我懷疑這就是問題所在。 我的想法是在將數據集拆分為訓練集和測試集之前對整個數據集進行規范化,但我遇到了一個讓我難過的屬性錯誤。
這是代碼示例。 請幫忙:)
#concatenate the surface data and single_downhole_col into a single dataframe
training_Data =[]
training_Data = pd.concat([surface_Data, single_downhole_col], axis=1)
#print('training data shape:',training_Data.shape)
#print(training_Data.head())
#normalize the data using keras
model_normalizer_layer = tf.keras.layers.Normalization(axis=-1)
model_normalizer_layer.adapt(training_Data)
normalized_training_Data = model_normalizer_layer(training_Data)
#convert the data frame to array
dataset = normalized_training_Data.copy()
dataset.tail()
#create a training and test set
train_dataset = dataset.sample(frac=0.8, random_state=0)
test_dataset = dataset.drop(train_dataset.index)
#check the data
train_dataset.describe().transpose()
#split features from labels
train_features = train_dataset.copy()
test_features = test_dataset.copy()
如果有興趣了解如何在 model 中使用規范化層,請參見下文
def build_and_compile_model(data):
model = keras.Sequential([
model_normalizer_layer,
layers.Dense(260, input_dim=401,activation='relu'),
layers.Dense(80, activation='relu'),
#layers.Dense(40, activation='relu'),
layers.Dense(1)
])
我發現在我的 model 中處理之前使用數據集標准化的 quasimodos 建議是理想的解決方案。 它按預期將所有列的數據縮放為 0 到 1,並允許我在訓練之前顯示數據以驗證它是否正確。
無論出於何種原因, keras.layers.normalization 在我的情況下都不起作用。
x = training_Data.values
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
training_Data = pd.DataFrame(x_scaled)
#normalize the data using keras
model_normalizer_layer = tf.keras.layers.Normalization(axis=-1)
model_normalizer_layer.adapt(training_Data)
normalized_training_Data = model_normalizer_layer(training_Data)
我還沒有弄清楚的唯一部分是如何將 model 中的預測數據縮放回列的原始范圍??? 我敢肯定它很簡單,但我很難過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.