问题出在您的目标形状上,并且与正确选择适当的损失函数有关。您有两种可能性:
1.可能性 :如果您具有一维整数编码目标,则可以
sparse_categorical_crossentropy用作损失函数
n_class = 3n_features = 100n_sample = 1000X = np.random.randint(0,10, (n_sample,n_features))y = np.random.randint(0,n_class, n_sample)inp = Input((n_features,))x = Dense(128, activation='relu')(inp)out = Dense(n_class, activation='softmax')(x)model = Model(inp, out)model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy'])history = model.fit(X, y, epochs=3)
2.可能性
:如果您已对目标进行一次热编码以具有2D形状(n_samples,n_class),则可以使用
categorical_crossentropy
n_class = 3n_features = 100n_sample = 1000X = np.random.randint(0,10, (n_sample,n_features))y = pd.get_dummies(np.random.randint(0,n_class, n_sample)).valuesinp = Input((n_features,))x = Dense(128, activation='relu')(inp)out = Dense(n_class, activation='softmax')(x)model = Model(inp, out)model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])history = model.fit(X, y, epochs=3)



