[英]Splitting data in training/validation in Tensorflow CIFAR-10 tutorial
[英]TensorFlow / Keras splitting training and validation data
我正在學習如何使用 TensorFlow,並獲得了一個可用的 model,它構建在 Keras 結構中。 它運行但結果對我來說有點神秘。 我試圖復制它並將其簡化為它的本質,然后再次構建它。 我根本無法理解的部分是它如何/在何處將訓練數據輸入拆分為訓練和驗證集? 我已經檢查了 model 代碼,初始參數等。TensorFlow 卷積神經網絡中是否有內置的 function 自動執行此操作?
對 Talos 的調用如下所示,前兩個值是 x-training 和 y-training 值, x_val
或y_val
沒有傳遞給 Talos function。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
它根本沒有拆分訓練數據,您通過參數validation_data
明確地將驗證數據傳遞給model.fit
:
out = model.fit(x_train, y_train, epochs = params['epoch'],
batch_size =params['batches'],
validation_data =(x_val, y_val))
如果你想拆分你的訓練數據並且不想提供驗證數據,你可以使用model.fit(...)
中的validation_split
參數,這是訓練數據的一部分用作驗證數據。通過默認情況下,它設置為 0.0。
更新 1 :檢查talos.Scan
的源代碼,它默認使用 0.3 的validation_split
。 另外,檢查這個。 然后它應該是不言自明的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.