簡體   English   中英

R中的python keras和keras之間的精度不同

[英]Different accuracy between python keras and keras in R

我通過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正在為run keras調用python。 使用相同的模型架構,它們應該獲得類似的性能。

我想知道這個問題是否由preprocess引起,但仍然顯示我的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'])

這是一個簡單的分類。 我和大多數指令一樣。

找不到別人面臨同樣的問題。 所以想問問它是如何發生以及如何解決的。 謝謝

這是一個顯着的差異,從而可能有一個在代碼或東西在數據意外的錯誤,但重現Keras從結果RPython比它看起來可能因為設置的種子更為困難R側是不夠的。 取而代之的set.seed你應該使用use_session_with_seed ,附帶了用於R庫tensorflowkeras 請注意,為了完全重現,您需要use_session_with_seed(..., disable_gpu=TRUE, disable_parallel_cpu=TRUE) 另請參閱stacktf docs。 此外,這是使用kerasformula的github版本和公共數據集的示例 另外,請注意接受seed作為參數的layer_dropout等函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM