Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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-model.u类给出了错误的标签_Python_Machine Learning_Keras_Neural Network - Fatal编程技术网

Python Keras-model.u类给出了错误的标签

Python Keras-model.u类给出了错误的标签,python,machine-learning,keras,neural-network,Python,Machine Learning,Keras,Neural Network,我的模特就像 print('Build main model…')) 模型=顺序() model.add(合并([left,right],mode='sum')) model.add(密集型(14,activation='softmax')) compile(loss='binary\u crossentropy',optimizer='adam',metrics=['accurity']) 当我使用model.evaluate([xtest1,xtest2],y\u test)时,我得到了9

我的模特就像

print('Build main model…'))
模型=顺序()
model.add(合并([left,right],mode='sum'))
model.add(密集型(14,activation='softmax'))
compile(loss='binary\u crossentropy',optimizer='adam',metrics=['accurity'])

当我使用
model.evaluate([xtest1,xtest2],y\u test)
时,我得到了90%的准确率,但当我使用
model.predict\u类([x\u test1,x\u xtest2])
时,我得到了完全错误的类标签,这样我的准确率会显著下降。
model.evaluate
model.predict\u class
schema有什么区别?我哪里出错了?

既然你在模型编译中要求
loss='binary\u cross\u entropy'
metric=['accurity']
,Keras推断你对二进制精度感兴趣,这就是它在
model.evaluate()中返回的结果;事实上,由于您有14个类,您实际上对分类的准确性感兴趣,这是通过
model.predict\u classes()
报告的

因此,您应该将模型编译中的损失函数更改为
categorical\u crossentropy

model.compile(loss='classifical_crossentropy',optimizer='adam',metrics=['accurity'])
如果出于任何原因,您希望坚持使用
loss='binary\u crossentropy'
(无可否认,这将是一个非常不寻常的选择),那么您应该更改模型编译,以澄清您想要的分类准确性如下:

来自keras.metrics导入分类精度
compile(loss='binary\u crossentropy',optimizer='adam',metrics=[分类精度])
在这两种情况下,您都会发现
model.evaluate()
model.predict\u classes()
报告的精度是相同的


有关使用MNIST数据的更详细解释和示例,请参阅。

因为您在模型编译中要求
损失
度量=['accurity']
,Keras推断您对二进制精度感兴趣,这是它在
model.evaluate()中返回的结果;事实上,由于您有14个类,您实际上对分类的准确性感兴趣,这是通过
model.predict\u classes()
报告的

因此,您应该将模型编译中的损失函数更改为
categorical\u crossentropy

model.compile(loss='classifical_crossentropy',optimizer='adam',metrics=['accurity'])
如果出于任何原因,您希望坚持使用
loss='binary\u crossentropy'
(无可否认,这将是一个非常不寻常的选择),那么您应该更改模型编译,以澄清您想要的分类准确性如下:

来自keras.metrics导入分类精度
compile(loss='binary\u crossentropy',optimizer='adam',metrics=[分类精度])
在这两种情况下,您都会发现
model.evaluate()
model.predict\u classes()
报告的精度是相同的


有关使用MNIST数据的更详细解释和示例,请参见。

能否提供完整的代码以及如何以更好的格式计算精度您有多少个类?我猜它们不止2个…@desertnaut,是的,有14个类。你能提供完整的代码以及你如何以更好的格式计算精度吗?你有多少个类?我猜他们不止2个…@desertnaut,是的,有14个班。