【问题标题】:Keras (R): Remove layer after trainingKeras (R):训练后移除层
【发布时间】:2019-11-01 18:23:23
【问题描述】:

假设我已经用 R 训练了我的 Keras 模型;比如说:

     model<-keras_model_sequential()

     model %>% layer_dense(units=5,activation = "relu",input_shape = c(4))%>% 

     layer_dense(units=Height,activation = "relu",input_shape = c(4)) %>%

     model %>% layer_dense(units=1)

一旦经过训练,是否可以删除最后一层,同时保持其他所有内容不变?

【问题讨论】:

    标签: r tensorflow keras deep-learning


    【解决方案1】:

    如果先单独定义层,则可以使用相同的层创建新模型:

    model <- keras_model_sequential()
    
    firstLayer <- layer_dense(units=5,activation = "relu",input_shape = c(4))
    secondLayer <- layer_dense(units=Height,activation = "relu",input_shape = c(4))
    
    model %>% firstLayer %>% 
    secondLayer %>%
    layer_dense(units=1)
    

    新模型:

    model2 <- keras_model_sequential()
    model2 %>% firstLayer %>%
    secondLayer
    

    【讨论】:

    • 但是在训练了整个模型(两层)之后,我如何提取第一束(经过试验)?也许我错过了什么。
    • 你不需要。 model2 包含“非常相同”(经过训练的)层
    • 如果我使用 pop_layer 可以存储最后一层而不是只删除它吗?
    • 我不认为流行音乐是一个非常值得信赖的东西。我更喜欢拥有更多模型,或者使用函数式 API 创建使用较小模型的模型,这样我就可以独立使用所有模型,但它们都共享和更新权重。
    • 通过这种modelmodel2 方法,两种模型同时存在,您可以使用其中任何一种。如果你训练一个,另一个会自动更新(因为实际上它们具有相同的层,而不是副本)。火车model。然后当你不想要最后一层时,开始使用model2(已经训练好了)。如果你还想要最后一层,回到model,它还在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    相关资源
    最近更新 更多