0

我正在学习如何使用 TensorFlow,并获得了一个基于 Keras 结构的工作模型。它运行但结果对我来说有点神秘。我试图复制它并将其简化为最基本的本质,然后重新构建它。我根本无法理解的部分是它如何/在哪里将训练数据输入拆分为训练和验证集?我检查了模型代码、初始参数等。TensorFlow 卷积神经网络中是否有内置函数可以自动执行此操作?

对 Talos 的调用如下所示,前两个值是 x-training 和 y-training 值,没有x_valy_val传递给 Talos 函数。Talos 是否可以自动生成x_valy_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
4

1 回答 1

3

它根本没有拆分训练数据,您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。另外,检查这个。那么它应该是不言自明的。

于 2022-02-28T08:51:56.013 回答