Я работаю над Keras на Python, и у меня есть нейронная сеть (см. Код ниже). В настоящее время он работает только с активацией ReLu.
По экспериментальным причинам я хотел бы иметь несколько нейронов на ReLu, а некоторые на softmax (или на любую другую функцию активации). например, в слое с 20 нейронами я хотел бы иметь 10 с ReLu и 10 с Softmax.
Я пробовал несколько разных способов, но всегда не получал результата.
Вы бы знали, как мне это сделать?
# - Libraries
from keras.layers import Dense
from keras.models import Sequential
from keras.callbacks import EarlyStopping
early_spotting_monitor = EarlyStopping(patience=2)
layers = 4
neurons = 20
act = "ReLu"
# - Create Neural Network
model = Sequential()
model.add(Dense(neurons,activation=act,input_dim=X_train.shape[1]))
layers -= 1
while layers > 0:
model.add(Dense(neurons,activation=act))
layers -= 1
model.add(Dense(n_months))
model.compile(optimizer="adam",loss="mean_absolute_error")
model.fit(X_train,Y_train,validation_split=0.10,epochs=13,callbacks=[early_spotting_monitor])
РЕДАКТИРОВАТЬ: это мой (рабочий) код:
# - Libraries
from keras.callbacks import EarlyStopping
early_spotting_monitor = EarlyStopping(patience=2)
from keras.layers import Input, Dense
from keras.models import Model
from keras.layers.merge import concatenate
# input layer
visible = Input(shape=(X_train.shape[1],))
hidden11 = Dense(14, activation='relu')(visible)
hidden12 = Dense(3, activation='softplus')(visible)
hidden13 = Dense(2, activation='linear')(visible)
hidden13 = Dense(2, activation='selu')(visible)
merge1 = concatenate([hidden11, hidden12, hidden13])
hidden21 = Dense(14, activation='relu')(merge1)
hidden22 = Dense(3, activation='softplus')(merge1)
hidden23 = Dense(2, activation='linear')(merge1)
hidden13 = Dense(2, activation='selu')(visible)
merge2 = concatenate([hidden21, hidden22, hidden23])
hidden3 = Dense(20, activation='relu')(merge2)
output = Dense(Y_train.shape[1],activation="linear")(hidden3)
model = Model(inputs=visible, outputs=output)
model.compile(optimizer="adam",loss="mean_absolute_error")
model.fit(X_train,Y_train,validation_split=0.10,epochs=13,callbacks=[early_spotting_monitor]) # starts training
return model
slice
слойx
на два (или более)x_1,x_2,x_3...
, затем используйте различные функции активацииy_n = act_n(x_n)
, затемconcat
y_n
s. - person M. Shaw   schedule 12.12.2017