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个班。