gpt4 book ai didi

python - R中python keras和keras之间的不同精度

转载 作者:太空狗 更新时间:2023-10-30 01:31:45 25 4
gpt4 key购买 nike

我通过 keras 在 R 中为 R 构建图像分类模型。

获得了大约 98% 的准确率,而在 python 中获得了可怕的准确率。

R 的 Keras 版本是 2.1.3,python 是 2.1.5

R模型代码如下:

model=keras_model_sequential()
model=model %>%
layer_conv_2d(filters = 32,kernel_size = c(3,3),padding = 'same',input_shape = c(187,256,3),activation = 'elu')%>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_dropout(.25) %>% layer_batch_normalization() %>%
layer_conv_2d(filters = 64,kernel_size = c(3,3),padding = 'same',activation = 'relu') %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_dropout(.25) %>% layer_batch_normalization() %>% layer_flatten() %>%
layer_dense(128,activation = 'relu') %>%
layer_dropout(.25)%>%
layer_batch_normalization() %>%
layer_dense(6,activation = 'softmax')


model %>%compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics='accuracy'
)

我尝试使用相同的输入数据在 python 中重建相同的模型。

同时,得到了完全不同的表现。准确率甚至不到30%

因为 R keras 正在调用 python 来运行 keras。使用相同的模型架构,它们应该获得相似的性能。

我想知道这个问题是否是由预处理引起的,但仍然显示我的 python 代码:

model=Sequential()
model.add(Conv2D(32,kernel_size=(3,3),activation='relu',input_shape=(187,256,3),padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(Conv2D(64, (3, 3), activation='relu',padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(Dense(len(label[1]), activation='softmax'))

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

这是一个简单的分类。我只是按照大多数指令做同样的事情。

找不到其他人面临同样的问题。所以想请教一下是怎么回事,怎么解决。谢谢

最佳答案

这是一个巨大的差异,所以可能代码中存在错误或数据中存在意外情况,但在 Python 中从 R 重现 Keras 结果> 比看起来更难,因为在 R 端设置种子是不够的。您应该使用 use_session_with_seed 而不是 set.seed,它随 tensorflowkeras 的 R 库一起提供。请注意,为了完全再现,您需要use_session_with_seed(..., disable_gpu=TRUE, disable_parallel_cpu=TRUE)。另见 stacktf文档。另外,这是一个 example使用 github 版本的 kerasformula 和一个公共(public)数据集。此外,请注意像 layer_dropout 这样接受 seed 作为参数的函数。

关于python - R中python keras和keras之间的不同精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49890866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com