Python中文
首页
教程
问答
标签
搜索
登录
注册
kerasv1.2.2与kerasv2+的奇怪行为(精确度上的巨大差异)
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>今天我遇到了一些非常奇怪的行为。<em>当我尝试用一个简单的模型在iris数据集上进行分类时,keras版本1.2.2给了我+-95%的准确率,而keras版本2.0+为每个训练示例预测相同的类(导致+-35%的准确率,因为有三种类型的iris)</em>。唯一能让我的模型预测准确率达到+-95%的是将keras降级到2.0以下的版本:</p> <p>我觉得这是凯拉斯的问题,因为我试过以下几件事,都没什么区别</p> <ul> <li>最后一层的开关激活功能(从Sigmoid到softmax)。你知道吗</li> <li>交换后端(Theano和Tensorflow都提供大致相同的性能)。你知道吗</li> <li>使用随机种子。你知道吗</li> <li>改变隐藏层中神经元的数量(在这个简单模型中我只有一个隐藏层)。你知道吗</li> <li>开关损耗函数。你知道吗</li> </ul> <p>因为模型非常简单,而且它自己运行(您只需要简单的虹膜.csv数据集)我决定包含整个代码</p> <pre><code>import pandas as pd from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold from sklearn.preprocessing import LabelEncoder #Load data data_frame = pd.read_csv("iris.csv", header=None) data_set = data_frame.values X = data_set[:, 0:4].astype(float) Y = data_set[:, 4] #Encode class values as integers encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # convert integers to dummy variables (i.e. one hot encoded) dummy_y = np_utils.to_categorical(encoded_Y) def baseline_model(): #Create & Compile model model = Sequential() model.add(Dense(8, input_dim=4, init='normal', activation='relu')) model.add(Dense(3, init='normal', activation='sigmoid')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model #Create Wrapper For Neural Network Model For Use in scikit-learn estimator = KerasClassifier(build_fn=baseline_model, nb_epoch=200, batch_size=5, verbose=0) #Create kfolds-cross validation kfold = KFold(n_splits=10, shuffle=True) #Evaluate our model (Estimator) on dataset (X and dummy_y) using a 10-fold cross-validation procedure (kfold). results = cross_val_score(estimator, X, dummy_y, cv=kfold) print("Accuracy: {:2f}% ({:2f}%)".format(results.mean()*100, results.std()*100)) </code></pre> <p>如果有人想复制这个错误,下面是我用来观察问题的依赖项:</p> <pre><code>numpy=1.16.4 pandas=0.25.0 sk-learn=0.21.2 theano=1.0.4 tensorflow=1.14.0 </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我已经设法隔离了这个问题,如果你把<code>nb_epoch</code>改成<code>epochs</code>(其他条件完全相同),那么这个模型在keras2中也预测得很好。我不知道这是故意的行为还是一个错误。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
4 回答
无法使用Django\u mssql\u后端迁移到外部hos
6 回答
无法使用Django&Python3.4连接到MySql
2 回答
无法使用Django+nginx上载媒体文件
9 回答
无法使用Django1.6导入名称模式
8 回答
无法使用Django1.7和mongodb登录管理站点
5 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
3 回答
无法使用Djangockedi验证CBV中的字段
4 回答
无法使用Djangocketditor上载图像(错误400)
1 回答
无法使用Djangocron进行函数调用
10 回答
无法使用Djangofiler djang上载文件
3 回答
无法使用Djangokronos
10 回答
无法使用Djangomssql provid
6 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
9 回答
无法使用Djangomssq迁移Django数据库
4 回答
无法使用Djangonox创建用户
8 回答
无法使用Djangopyodb从Django查询SQL Server
5 回答
无法使用Djangopython3ldap连接到ldap
9 回答
无法使用Djangoredis连接到redis
10 回答
无法使用Django中的FK创建新表
3 回答