我正在學習如何使用 TensorFlow,并獲得了一個基于 Keras 結構的作業模型。它運行但結果對我來說有點神秘。我試圖復制它并將其簡化為最基本的本質,然后重新構建它。我根本無法理解的部分是它如何/在哪里將訓練資料輸入拆分為訓練和驗證集?我檢查了模型代碼、初始引數等。TensorFlow 卷積神經網路中是否有內置函式可以自動執行此操作?
對 Talos 的呼叫如下所示,前兩個值是 x-training 和 y-training 值,沒有x_val或y_val傳遞給 Talos 函式。Talos 是否可以自動生成x_val和y_val?
jam1 = talos.Scan(features3,
label2[0,],
model = DLAt,
params = ParamsJam1,
experiment_name = "toy1",
fraction_limit=.2)
def DLAt(x_train, y_train, x_val, y_val, params):
model = Sequential()
convLayer = Conv1D(filters=params['numFilters'],
kernel_size=params['kernalLen'], strides=1, activation='relu',
input_shape=(300,4), use_bias=True)
model.add(convLayer)
model.add(MaxPooling1D(pool_size=params['maxpool']))
model.add(Flatten())
firstHidden = Dense(params['neuronsInLayerOne'], activation='relu',
kernel_regularizer=regularizers.l1_l2(l1=params['l1'], l2=0))
model.add(firstHidden)
model.add(Dropout(params['dropoutLevel']))
model.add(Dense(params['neuronsInLayerTwo'], activation='relu'))
model.add(Dropout(params['dropoutLevel']))
model.add(Dense(1, activation='sigmoid'))
opt = keras.optimizers.Adam(lr=params['lr'])
model.compile(optimizer = opt, loss = 'loss', metrics = ['mse'])
out = model.fit(x_train, y_train, epochs = params['epoch'],
batch_size =params['batches'],
validation_data =(x_val, y_val))
return out, model
uj5u.com熱心網友回復:
它根本沒有拆分訓練資料,您model.fit通過引數顯式傳遞驗證資料validation_data:
out = model.fit(x_train, y_train, epochs = params['epoch'],
batch_size =params['batches'],
validation_data =(x_val, y_val))
如果你想分割你的訓練資料并且不想提供驗證資料,你可以使用validation_split引數 in model.fit(...),它是訓練資料中要用作驗證資料的分數。默認情況下,它設定為 0.0。
更新1:查看源代碼,默認talos.Scan使用validation_split0.3的a。另外,檢查這個。那么它應該是不言自明的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434146.html
上一篇:TensorFlow內積乘法
