Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 神经网络Keras序列模型中概率值取0或1_Python_Neural Network_Keras_Sequential - Fatal编程技术网

Python 神经网络Keras序列模型中概率值取0或1

Python 神经网络Keras序列模型中概率值取0或1,python,neural-network,keras,sequential,Python,Neural Network,Keras,Sequential,我正在python库Keras上为神经网络(模型“顺序”)运行30k的训练集 当我拟合模型并计算测试集(大小=13k)上的概率时,我得到的结果仅为0或1。而我应该得到一些分数,比如0.62,0.42,0.31等等 我尝试使用class_weight并将其设置为“自动”或“平衡”,但我无法解决此问题 输出不是整数类型,仅为浮点类型 下面是代码 from keras.models import Sequential from keras.layers import Dense import nump

我正在python库Keras上为神经网络(模型“顺序”)运行30k的训练集

当我拟合模型并计算测试集(大小=13k)上的概率时,我得到的结果仅为0或1。而我应该得到一些分数,比如0.62,0.42,0.31等等

我尝试使用class_weight并将其设置为“自动”或“平衡”,但我无法解决此问题

输出不是整数类型,仅为浮点类型

下面是代码

from keras.models import Sequential
from keras.layers import Dense
import numpy as np
seed = 8 
np.random.seed(seed)

model = Sequential()
model.add(Dense(9, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(5, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))

from keras.optimizers import SGD
model.compile(loss='binary_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True), metrics=['accuracy'])

trainx = X_train.as_matrix()
trainy = y_train.as_matrix()

import time as time
start = time.time()
model.fit(trainx, trainy, nb_epoch=10, batch_size=10, verbose = 2,    class_weight ='auto')
print (time.time() - start)

X_test = X_test.as_matrix()
y_test = y_test.as_matrix()

proba = model.predict_proba(X_test, batch_size=10)
proba的值都是0。
数据只有2%的默认值大小写,因此它的类是不平衡的。

听起来很像您可能得到的是一个整数返回,它只能是1或0,而不是浮点返回。因此,您可以尝试查看
int
是否在代码中的任何位置将其转换为整数,或者您可能需要将其转换为
float
的某个位置。如果没有更多的上下文,就不可能说…

也许我错了,但到目前为止,我从来没有看到过这个论点是合适的:

 class_weight ='auto'
我会试试看

class_weight = {0: 1., 1: 50.}

事实上,您的问题似乎来自不平衡的数据集。

请在此处显示您的代码,我们可以帮助您更好地解决问题。请从检查最后一层的输入开始。如果权重较大,Softmax可以产生一个类似热的输出。您是否尝试使用
model.predict()
?此外,如果您能给我们提供数据集的样本,也会很有帮助,因为有时问题存在(例如,标准化问题),在明确取出数据集后,会因为添加紧急乞讨而被否决。请不要试图将自己的截止日期转移给志愿者,这是不礼貌的。如果您只是无意中覆盖了对问题的编辑,请在编辑之前始终刷新页面,以便保留志愿者编辑所做的任何修改。您的模型的准确性如何?它会不会太过拟合以至于总是采用二进制结果?