验证数据可以作为tensorflow.keras 2.0中的生成器吗?

2024-01-23

在官方文件中张量流keras https://www.tensorflow.org/api_docs/python/tf/keras/Model,

validation_data 可以是:Numpy 数组或张量的元组 (x_val, y_val) Numpy 数组的元组 (x_val, y_val, val_sample_weights) 对于前两种情况,必须提供batch_size。对于最后一种情况,可以提供validation_steps。

它没有提到生成器是否可以充当validation_data。所以我想知道validation_data是否可以是一个数据生成器?像以下代码 https://github.com/filipetrocadoferreira/end2endlobesegmentation/blob/master/train.py:

net.fit_generator(train_it.generator(), epoch_iterations * batch_size, nb_epoch=nb_epoch, verbose=1,
                  validation_data=val_it.generator(), nb_val_samples=3,
                  callbacks=[checker, tb, stopper, saver])

更新: 在官方文件中keras https://keras.io/models/sequential/,内容相同,但多了一句:

  • 数据集或数据集迭代器

考虑到

对于前两种情况,必须提供batch_size。对于最后一种情况,可以提供validation_steps。

我觉得应该有3种情况。 Keras 的文档是正确的。所以我会在tensorflow.keras中发布一个问题来更新文档。


是的,可以,奇怪的是它不在文档中,但它的工作原理与x参数,你也可以使用keras.Sequence or a generator。在我的项目中我经常使用keras.Sequence就像发电机一样

表明它有效的最小工作示例:

import numpy as np
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten

def generator(batch_size): # Create empty arrays to contain batch of features and labels
    batch_features = np.zeros((batch_size, 1000))
    batch_labels = np.zeros((batch_size,1))
    while True:
        for i in range(batch_size):
            yield batch_features, batch_labels

model = Sequential()
model.add(Dense(125, input_shape=(1000,), activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

train_generator = generator(64)
validation_generator = generator(64)

model.fit(train_generator, validation_data=validation_generator, validation_steps=100, epochs=100, steps_per_epoch=100)

100/100 [==============================] - 1s 13ms/步 - 损失:0.6689 - 准确度:1.0000 - val_loss :0.6448 - val_accuracy:1.0000 纪元 2/100 100/100 [==============================] - 0s 4ms/步 - 损失:0.6223 - 精度:1.0000 - val_loss :0.6000 - val_accuracy:1.0000 纪元 3/100 100/100 [==============================] - 0s 4ms/步 - 损失:0.5792 - 精度:1.0000 - val_loss :0.5586 - val_accuracy:1.0000 纪元 4/100 100/100 [==============================] - 0s 4ms/步 - 损失:0.5393 - 精度:1.0000 - val_loss :0.5203​​ - val_accuracy:1.0000

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

验证数据可以作为tensorflow.keras 2.0中的生成器吗? 的相关文章

随机推荐