NameError:未定义名称“Subtract”

时间:2018-03-19 14:59:00

标签: python neural-network keras attributeerror nameerror

我正在研究神经网络,我将在Dueling DQN算法中使用它,但是我遇到了keras层Subtract的问题,当我使用这个层时我收到了这个错误:

  

AttributeError:模块'keras.layers'没有属性'Subtract'

方法,我使用Subtract:

def DDDQN(self):
    inp=Input(shape=(self.state_size,))
    x=Dense(units=32,activation='relu',kernel_initializer='he_uniform')(inp)
    x=Dense(units=16,activation='relu',kernel_initializer='he_uniform')(x)
    value_=Dense(units=1,activation='linear',kernel_initializer='he_uniform')(x)
    ac_activation=Dense(units=self.action_size,activation='linear',kernel_initializer='he_uniform')(x)

    avg_ac_activation=Lambda(lambda x: K_back.mean(x,axis=1,keepdims=True))(ac_activation)

    concat_value=Concatenate(axis=-1)([value_,value_])
    concat_avg_ac=Concatenate(axis=-1)([avg_ac_activation,avg_ac_activation])

    for i in range(1,self.action_size-1):
        concat_value=Concatenate(axis=-1)([concat_value,value_])
        concat_avg_ac=Concatenate(axis=-1)([concat_avg_ac,avg_ac_activation])

    ac_activation=Subtract()([ac_activation,concat_avg_ac])

    merged_layers=Add()([concat_value,ac_activation])
    final_model=Model(inputs=inp,outputs=merged_layers)

    final_model.compile(loss='mean_squared_error',optimizer=Adam(lr=self.learning_rate))
    return final_model

其他层如Dense,Lambda或Multiplicate正常工作,有任何建议如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

基础知识首先,您是否安装了相应的Python解释器版本?

尝试更新到Python3.6以获取示例(如果这与您相关)