0
任何人都可以幫助我理解爲什麼此模型不能提供可重複的結果嗎?它會更改我使用的測試集和其他驗證集的準確度值,每次運行時都會這樣。我正在使用已定義的種子。我不明白爲什麼會這樣。即使在keras中設置隨機種子順序模型也會返回不同的結果
下面是我的代碼部分:
np.random.seed(7)
# Create the model
def create_model(neurons=190, init_mode='normal', activation='relu', inputDim=8040, dropout_rate=0.8,
learn_rate=0.001, momentum=0.7, weight_constraint=5):
model = Sequential()
model.add(Dense(neurons, input_dim=inputDim, kernel_initializer=init_mode, activation=activation, kernel_constraint=maxnorm(weight_constraint), kernel_regularizer=regularizers.l2(0.002)))
model.add(Dense(1, activation='sigmoid'))
optimizer = RMSprop(lr=learn_rate)
# compile model
model.compile(loss='binary_crossentropy', optimizer='RmSprop', metrics=['accuracy'])
model = create_model()
seed = 7
# Define k-fold cross validation test harness
kfold = StratifiedKFold(n_splits=3, shuffle=True, random_state=seed)
cvscores = []
for train, test in kfold.split(X_train, Y_train):
print("TRAIN:", train, "VALIDATION:", test)
# Fit the model
history = model.fit(X_train, Y_train, epochs=40, batch_size=50, validation_data=(X_test, Y_test), verbose=0)
我將不勝感激一些關於它的評論。
我沒有通過設置RNG種子來得到你的意思。順便說一句'random_state'不是創建模型的函數或屬性,所以我不知道如何在那裏設置種子。使用該自定義初始化程序,是否意味着我必須排除我的'init_mode ='normal'',並且由您向我發送鏈接的keras文檔生成了一個? –
我曾嘗試這樣的:從'進口keras後端爲K DEF my_init(形狀,D型細胞=無): 返回K.random_normal(形狀,D型細胞= D型細胞,種子= 7) DEF create_model(神經元= 190, init_mode ='normal',activation ='relu',inputDim = 8040,dropout_rate = 0.8, learn_rate = 0.001,動量= 0.7,weight_constraint = 5): model = Sequential() model.add(Dense(neurons,input_dim = inputDim,kernel_initializer = my_init,activation = activation,kernel_constraint = maxnorm(weight_constraint),kernel_regularizer = regularizers.l2(0.002)))'但仍然返回不同的結果。 –
我的觀點是,即使在設置隨機種子之前,我們也會繪製隨機數。有關更多詳細信息,請參閱我的答案更新。 – bogatron