Python 从第一个纪元开始,我得到了Keras的损失函数NaN

Python 从第一个纪元开始,我得到了Keras的损失函数NaN,python,keras,nan,loss-function,Python,Keras,Nan,Loss Function,我在第一个纪元就输了。列车_数据的形状为(891,13)。列车_标签的形状为(891,2)。 我为卡格尔的泰坦尼克号比赛制作了这个模型 from keras import models from keras import layers import tensorflow as tf def build_model(): model = models.Sequential() model.add(layers.Dense(64, activation='relu', inpu

我在第一个纪元就输了。列车_数据的形状为(891,13)。列车_标签的形状为(891,2)。 我为卡格尔的泰坦尼克号比赛制作了这个模型


from keras import models
from keras import layers
import tensorflow as tf


def build_model():
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu', input_shape=(train_data.shape[1],), kernel_initializer='normal', bias_initializer='zeros'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(2, activation='sigmoid'))
    model.compile(loss='categorical_crossentropy',
                 optimizer='Adam',
                 metrics=['accuracy'])
    return model
k = 3
num_val_samples = len(train_data) // k
num_epochs = 100
all_scores = []
for i in range(k):
    print('processing fold #', i)
    #検証データの準備
    val_data = train_data[i * num_val_samples: (i+1) * num_val_samples]
    val_labels = train_labels[i * num_val_samples: (i+1) * num_val_samples]
    #訓練データの準備
    partial_train_data = np.concatenate([train_data[:i * num_val_samples], train_data[(i+1) * num_val_samples:]], axis=0)
    partial_train_labels = np.concatenate([train_labels[:i * num_val_samples], train_labels[(i+1) * num_val_samples:]], axis=0)

model = build_model()
history = model.fit(partial_train_data,
                    partial_train_labels,
                    epochs=num_epochs,
                    batch_size=1,
                   validation_data=(val_data,val_labels))


问题可能来自您的模型定义:

不要将
Sigmoid
激活与
category\u交叉熵一起使用
loss:

  • 二进制问题:将
    Sigmoid
    Binary\u交叉熵一起使用
  • 多类问题:将
    Softmax
    categorical\u交叉熵一起使用
编辑 还有几点提示:

  • 检查您的数据,可能您正在向网络提供损坏的值,请检查数据集中的NaN
  • 尝试其他优化器
  • 尝试缩放数据,或尝试以不同方式缩放数据
  • 尝试使用更大的批量

谢谢您的建议。即使将激活函数从Sigmoid更改为Softmax,我也无法解决此问题。