Keras: Binary_crossentropy具有负值
Keras: Binary_crossentropy具有负值
我正在按照教程这个教程(第6节:整合一切)使用自己的数据集进行操作。使用教程中提供的示例数据集,我可以成功运行示例。但是,我得到的二进制交叉熵误差是负数,并且随着迭代次数的增加没有任何改善。我相当确定二进制交叉熵应该始终是正数,并且我应该看到损失有所改善。我在下面的输出(和代码调用)中截取了5个迭代周期。有时候训练CNN时,其他人似乎也遇到类似的问题,但是我没有在我的情况下找到明确的解决方案。有人知道这是为什么吗?
示例输出:
创建TensorFlow设备(/gpu:2)- > (设备:2,名称:GeForce GTX TITAN Black,pci总线id:0000:84:00.0)
10240/10240 [==============================] - 2秒 - 损失:-5.5378 - 精确度:0.5000 - 验证损失:-7.9712 - 验证精确度:0.5000
第2个周期/5
10240/10240 [==============================] - 0秒 - 损失:-7.9712 - 精确度:0.5000 - 验证损失:-7.9712 - 验证精确度:0.5000
第3个周期/5
10240/10240 [==============================] - 0秒 - 损失:-7.9712 - 精确度:0.5000 - 验证损失:-7.9712 - 验证精确度:0.5000
第4个周期/5
10240/10240 [==============================] - 0秒 - 损失:-7.9712 - 精确度:0.5000 - 验证损失:-7.9712 - 验证精确度:0.5000
第5个周期/5
10240/10240 [==============================] - 0秒 - 损失:-7.9712 - 精确度:0.5000 - 验证损失:-7.9712 - 验证精确度:0.5000
我的代码:
import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense dataset = np.loadtxt('train_rows.csv', delimiter=",") testset = np.loadtxt('test_rows.csv', delimiter=",") # 分割输入(X)和输出(Y)变量 X = dataset[:, :62] Y = dataset[:, 62] X_test = testset[:, :62] Y_test = testset[:, 62] ### 创建模型 model = Sequential() model.add(Dense(100, input_dim=(62,), activation='relu')) model.add(Dense(50, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) ## 拟合模型 model.fit(X, Y, validation_data=(X_test, Y_test), epochs=5, batch_size=128)