R的Keras与Python的Keras之间的差异-准确性错误?

克里斯

我正在使用Keras预测自行车共享需求,与一些2D CNN一起玩

与Python相比,R的性能非常差,后者很容易达到良好的精度。我以为是因为数组形状(以及R和Python之间的一些差异),所以我玩了一段时间,最终使用了所有可能的形状。

我在CombinationGrid其他地方创建了对象,它看起来像这样:

+------+------+------+------+-------+
| Dim1 | Dim2 | Dim3 | Dim4 | Order |
+------+------+------+------+-------+
| 8887 |    3 |    2 |    1 | F     |
|    3 | 8887 |    2 |    1 | F     |
| 8887 |    2 |    3 |    1 | C     |
|    2 | 8887 |    3 |    1 | C     |
+------+------+------+------+-------+

这是一个包含第4维数组组合的表(在代码中使用,将会更加清楚)。这是该版本的完整版本,仅用于重现性


这是R代码:

#Read data
TrainDF=read_delim(file='train.csv', delim=',')

#Subset
X_Train=TrainDF[2000:nrow(TrainDF),c('temp', 'atemp', 'humidity', 'windspeed', 'casual', 'registered')]
Y_Train=as.matrix(TrainDF[2000:nrow(TrainDF),c('count')])

#YVal
YVal=as.matrix(Y_Train)

#For loop and try all combinations
Results=list()
for(i in 1:nrow(CombinationGrid)){

  #Reshape using all possible combinations
  XVal=array_reshape(x=as.matrix(X_Train), dim=CombinationGrid[i,1:4], order=CombinationGrid[i,]$Order)

  #Keras Model
  model=keras_model_sequential() 
  model %>% 
    layer_conv_2d(filters=10, kernel_size=c(2,2), padding='same', activation='relu') %>%
    layer_conv_2d(filters=15, kernel_size=c(2,2), padding='same', activation='relu') %>%
    layer_conv_2d(filters=20, kernel_size=c(3,3), padding='same') %>%
    layer_max_pooling_2d(pool_size=c(2,2), strides=1) %>%
    layer_flatten() %>%
    layer_dense(units=30, activation='relu') %>%
    layer_dense(units=20, activation='relu') %>%
    layer_dense(units=10, activation='relu') %>%
    layer_dense(units=1)

  #Compile model
  model %>% compile(
    loss = 'mse',
    optimizer = optimizer_adam(),
    metrics = c('accuracy'))

  #Train model
  Hist=tryCatch({
    model %>% fit(XVal, YVal, epochs = 100)
  },error=function(e){
    Hist=list('metrics'=list('loss'=NA, 'acc'=NA))
  })

  #Save results
  Results[[i]]=list('Loss'=Hist$metrics$loss[length(Hist$metrics$loss)], 'Acc'=Hist$metrics$acc[length(Hist$metrics$acc)])

}

这是Python代码:

#Read Combination Gird
CombinationGrid=pd.read_table('CombinationGrid.txt')

#Read Dataset
TrainDF = pd.read_csv('train.csv', parse_dates=["datetime"])

#Subset training data
X_Train= TrainDF[1999:]

#Create responser variable
YVal = X_Train[['count']]

#Turn into numpy array
YVal=np.array(YVal)

#Select only usefull parameters
X_Train = X_Train[['temp', 'atemp', 'humidity', 'windspeed', 'casual', 'registered']]

#For loop to try all combinations
Results=[]
for i in range(0,CombinationGrid.shape[0]):
    XVal = np.array(X_Train, dtype=np.float32).reshape(tuple(CombinationGrid.iloc[i,])[0:4], order=tuple(CombinationGrid.iloc[i,])[4])

    model=keras.Sequential()
    model.add(keras.layers.Conv2D(filters=10, kernel_size=[2,2], padding='same', activation='relu'))
    model.add(keras.layers.Conv2D(filters=15, kernel_size=[2,2], padding='same', activation='relu'))
    model.add(keras.layers.Conv2D(filters=20, kernel_size=[3,3], padding='same'))
    model.add(keras.layers.MaxPooling2D(pool_size=[2,2], strides=1))
    model.add(keras.layers.Flatten())
    model.add(keras.layers.Dense(units=30, activation='relu'))
    model.add(keras.layers.Dense(units=20, activation='relu'))
    model.add(keras.layers.Dense(units=10, activation='relu'))
    model.add(keras.layers.Dense(units=1))

    model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])

    #Save results
    try:
        Hist=model.fit(XVal, YVal, epochs=100)
        Results.append((Hist.history['loss'][len(Hist.history['loss'])-1],Hist.history['accuracy'][len(Hist.history['accuracy'])-1]))
    except:
        Results.append((np.nan, np.nan))
pass

结果:

我保存了R和Python结果,它们在这里。在Python和R中,数据的所有其他数组形状均失败(可能是由于Y的形状不适合与预测变量匹配):

+------+------+------+------+-------+-------------+-------------+-------------+-------------+
| Dim1 | Dim2 | Dim3 | Dim4 | Order |   R Loss    |    R Acc    | Python Loss |  Python Acc |
+------+------+------+------+-------+-------------+-------------+-------------+-------------+
| 8887 |    3 |    2 |    1 | F     | 0.257986314 | 0.004726004 | 0.264519099 |  0.86125803 |
| 8887 |    2 |    3 |    1 | F     | 1.922012638 | 0.004726004 | 0.375910975 | 0.780578375 |
| 8887 |    3 |    2 |    1 | C     | 0.062438282 | 0.004726004 |  4.27717965 | 0.700686395 |
| 8887 |    2 |    3 |    1 | C     | 0.171041382 | 0.004726004 | 0.054061489 |  0.95262742 |
+------+------+------+------+-------+-------------+-------------+-------------+-------------+

如您所见,最后的损失看起来相似,但是最后记录的准确性在两者之间有很大的不同。我知道我在R和Python的尺寸和形状理解以及它们之间的区别方面存在一些缺陷,但是在尝试了每种可能的形状并且没有获得相似结果后,它变得很奇怪。另外,R中的Keras精度似乎永远不会改变!

我找不到这件事的更多信息,只有另一篇文章指出了相反的情况

因此,正在发生某些事情,这可能是我的错,但是我不知道为什么,如果我使用相同的数据,那么在R中使用Keras不能像在Python中那样获得高分。有任何想法吗?

克里斯

好吧,正如Skeydan在我打开的问题中向我解释的那样,准确性的差异在于所使用的Keras版本

在Python代码中,将更import keras改为import tensorflow.keras as keras可以使R和Python匹配的准确性。

我在这里这里找到了关于此的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

tesseract 的 Python 准确性

来自分类Dev

Keras的CNN模型的准确性差

来自分类Dev

Keras图像分类:显示的准确性较高,但测试图像的准确性较低

来自分类Dev

Keras:检索每个模型输出的准确性

来自分类Dev

什么代表了 Keras 中训练结果的损失或准确性

来自分类Dev

keras和scikit-learn的准确性计算上的差异

来自分类Dev

验证准确性非常低,训练准确性非常高python

来自分类Dev

验证和评估准确性方面的差异

来自分类Dev

MLP:迭代次数与准确性之间的关系

来自分类Dev

从R中的混淆矩阵获取“准确性(平均)”

来自分类Dev

R多变量提前预测和准确性

来自分类Dev

获取R中随机森林的准确性

来自分类Dev

Python:使用TensorFlow计算神经网络的准确性

来自分类Dev

Python-计算arcsin时的不准确性

来自分类Dev

在keras模型指标中使用简单的“准确性”进行多类分类在技术上是否错误?我们应该使用CategoricalAccuracy()吗?

来自分类Dev

比较2个数据表以查找列之间的差异/准确性

来自分类Dev

Keras fit_generator()在Colab上不显示准确性

来自分类Dev

Keras二进制分类器教程示例仅提供50%的验证准确性

来自分类Dev

表征股市神经网络的Keras损失和准确性

来自分类Dev

为什么tf.keras BatchNormalization导致GAN产生废话和准确性?

来自分类Dev

仅当验证准确性提高时,如何才能保存/覆盖我的TensorFlow / Keras模型?

来自分类Dev

Keras / Tensoflow训练期间报告的“准确性”是什么意思?

来自分类Dev

Keras顺序模型的准确性很差。模型正在忽略/忽略一个类

来自分类Dev

Keras图像分类网络始终预测一个类别,并保持50%的准确性

来自分类Dev

在Keras中使用CNN模型获得非常差的准确性

来自分类Dev

在Keras中实现神经网络的准确性非常低

来自分类Dev

图像分辨率如何影响Keras的结果和准确性?

来自分类Dev

如何在Keras中提高CNN分类器的准确性?

来自分类Dev

Keras 示例:mnist_siamese_graph - 准确性似乎不正确

Related 相关文章

  1. 1

    tesseract 的 Python 准确性

  2. 2

    Keras的CNN模型的准确性差

  3. 3

    Keras图像分类:显示的准确性较高,但测试图像的准确性较低

  4. 4

    Keras:检索每个模型输出的准确性

  5. 5

    什么代表了 Keras 中训练结果的损失或准确性

  6. 6

    keras和scikit-learn的准确性计算上的差异

  7. 7

    验证准确性非常低,训练准确性非常高python

  8. 8

    验证和评估准确性方面的差异

  9. 9

    MLP:迭代次数与准确性之间的关系

  10. 10

    从R中的混淆矩阵获取“准确性(平均)”

  11. 11

    R多变量提前预测和准确性

  12. 12

    获取R中随机森林的准确性

  13. 13

    Python:使用TensorFlow计算神经网络的准确性

  14. 14

    Python-计算arcsin时的不准确性

  15. 15

    在keras模型指标中使用简单的“准确性”进行多类分类在技术上是否错误?我们应该使用CategoricalAccuracy()吗?

  16. 16

    比较2个数据表以查找列之间的差异/准确性

  17. 17

    Keras fit_generator()在Colab上不显示准确性

  18. 18

    Keras二进制分类器教程示例仅提供50%的验证准确性

  19. 19

    表征股市神经网络的Keras损失和准确性

  20. 20

    为什么tf.keras BatchNormalization导致GAN产生废话和准确性?

  21. 21

    仅当验证准确性提高时,如何才能保存/覆盖我的TensorFlow / Keras模型?

  22. 22

    Keras / Tensoflow训练期间报告的“准确性”是什么意思?

  23. 23

    Keras顺序模型的准确性很差。模型正在忽略/忽略一个类

  24. 24

    Keras图像分类网络始终预测一个类别,并保持50%的准确性

  25. 25

    在Keras中使用CNN模型获得非常差的准确性

  26. 26

    在Keras中实现神经网络的准确性非常低

  27. 27

    图像分辨率如何影响Keras的结果和准确性?

  28. 28

    如何在Keras中提高CNN分类器的准确性?

  29. 29

    Keras 示例:mnist_siamese_graph - 准确性似乎不正确

热门标签

归档