目前我正在完成我的最終學位專案,我必須訓練一個預測個人類別的神經網路。該資料集是關于巴塞羅那的事故。因此,我的資料集具有分類和數字特征。為了訓練神經網路,我構建了一個模型,其中包含每個分類列的嵌入層。但是,當我嘗試擬合我的模型時,會出現以下內容。
1 m.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
----> 2 m.fit(dd_normalized, dummy_y)
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float).
我對此進行了研究,但似乎并沒有解決我的問題。我是神經網路的菜鳥,所以請耐心等待。我的代碼如下:
dd = pd.read_csv("C:/Users/Hussnain Shafqat/Desktop/Uni/Q8/TFG/Bases de dades/Modified/2021_Accidents_Final.csv")
dd_features = dd.copy()
Y = dd_features.pop('TipoAcc') #my target variable
# Normalization of Numerical variable
dd_normalized = dd_features.copy()
normalize_var_names = ["Long", "Lat", "NLesLeves", "NLesGraves", "NVictimas", "NVehiculos", "ACarne"]
for name, column in dd_features.items():
if name in normalize_var_names:
print(f"Normalizando {name}")
dd_normalized[name] = (dd_features[name] - dd_features[name].min()) / (dd_features[name].max() - dd_features[name].min())
dd_normalized = dd_normalized.replace({'VictMortales': {'Si': 1, 'No': 0}})
#Neural network model creation
def get_model(df):
names = df.columns
inputs = []
outputs = []
for col in names:
if col in normalize_var_names:
inp = layers.Input(shape=(1,), name = col)
inputs.append(inp)
outputs.append(inp)
else:
num_unique_vals = int(df[col].nunique())
embedding_size = int(min(np.ceil(num_unique_vals/2), 600))
inp = layers.Input(shape=(1,), name = col)
out = layers.Embedding(num_unique_vals 1, embedding_size, name = col "_emb")(inp)
out = layers.Reshape(target_shape = (embedding_size,))(out)
inputs.append(inp)
outputs.append(out)
x = layers.Concatenate()(outputs)
x = layers.Flatten()(x)
x = layers.Dense(64, activation ='relu')(x)
y = layers.Dense(15, activation = 'softmax')(x)
model = Model(inputs=inputs, outputs = y)
return model
m = get_model(dd_normalized)
#I convert the target variable using one hot encoding
encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)
dummy_y = np_utils.to_categorical(encoded_Y)
#Model training
m.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
m.fit(dd_normalized, dummy_y)
我嘗試使用 tf.convert_to_tensor 將我的資料集轉換為張量,但出現了相同的錯誤。經過一些研究,我發現當我嘗試使用分類列和數值列轉換為張量時會出現相同的錯誤。如果我將該函式僅應用于分類或數字列,它就可以正常作業。我知道我不能將分類資料提供給神經網路,但是,我認為嵌入層應該足以解決問題。
最后我想說,我也試過這個
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/469529.html