K-fold cross validation when using fit_generator and flow_from_directory() in Keras2019 Community Moderator ElectionHow to represent ROC curve when using Cross-Validationwhy k-fold cross validation (CV) overfits? Or why discrepancy occurs between CV and test set?Cross-validation of a cross-validated stacking ensemble?k-fold cross-validation: model selection or variation in models when using k-fold cross validationCross Validation how to determine when to Early Stop?how to prepare data for cross validation in mnist dataset?Using K-fold cross-validation in Keras on the data of my modelWhat is the best way to visualize 10 Fold Cross Validation Scores?Cross validation for convolutional neural networkFeature Scaling and normalization in cross-validation set
Is it unprofessional to ask if a job posting on GlassDoor is real?
What are the differences between the usage of 'it' and 'they'?
Why "Having chlorophyll without photosynthesis is actually very dangerous" and "like living with a bomb"?
Is this a crack on the carbon frame?
Font hinting is lost in Chrome-like browsers (for some languages )
The use of multiple foreign keys on same column in SQL Server
What is the offset in a seaplane's hull?
Why doesn't H₄O²⁺ exist?
Collect Fourier series terms
How is it possible to have an ability score that is less than 3?
Why, historically, did Gödel think CH was false?
What would happen to a modern skyscraper if it rains micro blackholes?
Adding span tags within wp_list_pages list items
can i play a electric guitar through a bass amp?
Is it legal for company to use my work email to pretend I still work there?
Why was the small council so happy for Tyrion to become the Master of Coin?
What typically incentivizes a professor to change jobs to a lower ranking university?
"to be prejudice towards/against someone" vs "to be prejudiced against/towards someone"
How can I make my BBEG immortal short of making them a Lich or Vampire?
Today is the Center
How can bays and straits be determined in a procedurally generated map?
Why does Kotter return in Welcome Back Kotter?
How does one intimidate enemies without having the capacity for violence?
Why are electrically insulating heatsinks so rare? Is it just cost?
K-fold cross validation when using fit_generator and flow_from_directory() in Keras
2019 Community Moderator ElectionHow to represent ROC curve when using Cross-Validationwhy k-fold cross validation (CV) overfits? Or why discrepancy occurs between CV and test set?Cross-validation of a cross-validated stacking ensemble?k-fold cross-validation: model selection or variation in models when using k-fold cross validationCross Validation how to determine when to Early Stop?how to prepare data for cross validation in mnist dataset?Using K-fold cross-validation in Keras on the data of my modelWhat is the best way to visualize 10 Fold Cross Validation Scores?Cross validation for convolutional neural networkFeature Scaling and normalization in cross-validation set
$begingroup$
I am using flow_from_directory()
and fit_generator
in my deep learning model, and I want to use cross validation method to train the CNN model.
datagen = ImageDataGenerator(rotation_range=15,width_shift_range=0.2,
height_shift_range=0.2,shear_range=0.2,
zoom_range=0.2,horizontal_flip=True,
fill_mode='nearest')
image_size = (224, 224)
batch = 32
train_generator = datagen.flow_from_directory(train_data,
target_size=image_size,
batch_size=batch,
classes= classes_array)
I found this Youtube video and this Tutorial, But it is not use flow_from_directory()
.
Do you have any idea how do I use k-fold cross validation when using fit_generator
and flow_from_directory()
in Keras?
python deep-learning keras tensorflow cross-validation
$endgroup$
add a comment |
$begingroup$
I am using flow_from_directory()
and fit_generator
in my deep learning model, and I want to use cross validation method to train the CNN model.
datagen = ImageDataGenerator(rotation_range=15,width_shift_range=0.2,
height_shift_range=0.2,shear_range=0.2,
zoom_range=0.2,horizontal_flip=True,
fill_mode='nearest')
image_size = (224, 224)
batch = 32
train_generator = datagen.flow_from_directory(train_data,
target_size=image_size,
batch_size=batch,
classes= classes_array)
I found this Youtube video and this Tutorial, But it is not use flow_from_directory()
.
Do you have any idea how do I use k-fold cross validation when using fit_generator
and flow_from_directory()
in Keras?
python deep-learning keras tensorflow cross-validation
$endgroup$
$begingroup$
Any progress with this issue? I faced with this problem. It seems that it obvious approach if you want use KFold for huge dataset.
$endgroup$
– Oktay
Feb 22 at 16:17
$begingroup$
No, I have not find a solution. The images dataset is not big, so I wanted to use cross validation.
$endgroup$
– Noran
Feb 24 at 7:24
$begingroup$
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode) can you share the code where you define the Generator in the above line?
$endgroup$
– Rohan
Mar 27 at 22:16
add a comment |
$begingroup$
I am using flow_from_directory()
and fit_generator
in my deep learning model, and I want to use cross validation method to train the CNN model.
datagen = ImageDataGenerator(rotation_range=15,width_shift_range=0.2,
height_shift_range=0.2,shear_range=0.2,
zoom_range=0.2,horizontal_flip=True,
fill_mode='nearest')
image_size = (224, 224)
batch = 32
train_generator = datagen.flow_from_directory(train_data,
target_size=image_size,
batch_size=batch,
classes= classes_array)
I found this Youtube video and this Tutorial, But it is not use flow_from_directory()
.
Do you have any idea how do I use k-fold cross validation when using fit_generator
and flow_from_directory()
in Keras?
python deep-learning keras tensorflow cross-validation
$endgroup$
I am using flow_from_directory()
and fit_generator
in my deep learning model, and I want to use cross validation method to train the CNN model.
datagen = ImageDataGenerator(rotation_range=15,width_shift_range=0.2,
height_shift_range=0.2,shear_range=0.2,
zoom_range=0.2,horizontal_flip=True,
fill_mode='nearest')
image_size = (224, 224)
batch = 32
train_generator = datagen.flow_from_directory(train_data,
target_size=image_size,
batch_size=batch,
classes= classes_array)
I found this Youtube video and this Tutorial, But it is not use flow_from_directory()
.
Do you have any idea how do I use k-fold cross validation when using fit_generator
and flow_from_directory()
in Keras?
python deep-learning keras tensorflow cross-validation
python deep-learning keras tensorflow cross-validation
edited Aug 16 '18 at 16:14
user140323
5331520
5331520
asked Aug 16 '18 at 8:59
NoranNoran
32011
32011
$begingroup$
Any progress with this issue? I faced with this problem. It seems that it obvious approach if you want use KFold for huge dataset.
$endgroup$
– Oktay
Feb 22 at 16:17
$begingroup$
No, I have not find a solution. The images dataset is not big, so I wanted to use cross validation.
$endgroup$
– Noran
Feb 24 at 7:24
$begingroup$
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode) can you share the code where you define the Generator in the above line?
$endgroup$
– Rohan
Mar 27 at 22:16
add a comment |
$begingroup$
Any progress with this issue? I faced with this problem. It seems that it obvious approach if you want use KFold for huge dataset.
$endgroup$
– Oktay
Feb 22 at 16:17
$begingroup$
No, I have not find a solution. The images dataset is not big, so I wanted to use cross validation.
$endgroup$
– Noran
Feb 24 at 7:24
$begingroup$
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode) can you share the code where you define the Generator in the above line?
$endgroup$
– Rohan
Mar 27 at 22:16
$begingroup$
Any progress with this issue? I faced with this problem. It seems that it obvious approach if you want use KFold for huge dataset.
$endgroup$
– Oktay
Feb 22 at 16:17
$begingroup$
Any progress with this issue? I faced with this problem. It seems that it obvious approach if you want use KFold for huge dataset.
$endgroup$
– Oktay
Feb 22 at 16:17
$begingroup$
No, I have not find a solution. The images dataset is not big, so I wanted to use cross validation.
$endgroup$
– Noran
Feb 24 at 7:24
$begingroup$
No, I have not find a solution. The images dataset is not big, so I wanted to use cross validation.
$endgroup$
– Noran
Feb 24 at 7:24
$begingroup$
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode) can you share the code where you define the Generator in the above line?
$endgroup$
– Rohan
Mar 27 at 22:16
$begingroup$
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode) can you share the code where you define the Generator in the above line?
$endgroup$
– Rohan
Mar 27 at 22:16
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
So, I haven't found any solution regarding this application of cross-validation in fit_generator(), I hope it comes in one update of the Keras package, since cross-validation is an important part of training models.
What I have done so far, basically I split the dataset first then I pass the data and labels to the fit_generator. At the end of each step I save the model, at the beggining of each step I load the preciuos model to continue the training over the same model, but with a different k-fold of the dataset. I'm pasting the part of my code where I use this approach, hope it helps.
## Training with K-fold cross validation
kf = KFold(n_splits=k_folds, random_state=None, shuffle=True)
kf.get_n_splits(images_file_paths)
X = np.array(images_file_paths)
y = np.array(class_labels)
i = 1
for train_index, test_index in kf.split(X):
trainData = X[train_index]
testData = X[test_index]
trainLabels = y[train_index]
testLabels = y[test_index]
print("=========================================")
print("====== K Fold Validation step => %d/%d =======" % (i,k_folds))
print("=========================================")
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode)
valGenerator = Generator(testData,testLabels,batchSize=batchSize,imageSize=imageSize,augment=False,grayMode=grayMode)
try:
model = load_model(weights_path, compile=True)
except Exception as OSError:
pass
model.fit_generator(
trainGenerator,
steps_per_epoch=len(trainData),
epochs=epochs,
validation_data=valGenerator,
validation_steps=len(testData))
i+=1
$endgroup$
$begingroup$
I have this same problem, but this is a non-solution in the sense, that you don't need a generator here. Consider that validation_data = (testData, testLabels) replaces the generator.
$endgroup$
– boomkin
Mar 25 at 14:41
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "557"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f37009%2fk-fold-cross-validation-when-using-fit-generator-and-flow-from-directory-in-ke%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
So, I haven't found any solution regarding this application of cross-validation in fit_generator(), I hope it comes in one update of the Keras package, since cross-validation is an important part of training models.
What I have done so far, basically I split the dataset first then I pass the data and labels to the fit_generator. At the end of each step I save the model, at the beggining of each step I load the preciuos model to continue the training over the same model, but with a different k-fold of the dataset. I'm pasting the part of my code where I use this approach, hope it helps.
## Training with K-fold cross validation
kf = KFold(n_splits=k_folds, random_state=None, shuffle=True)
kf.get_n_splits(images_file_paths)
X = np.array(images_file_paths)
y = np.array(class_labels)
i = 1
for train_index, test_index in kf.split(X):
trainData = X[train_index]
testData = X[test_index]
trainLabels = y[train_index]
testLabels = y[test_index]
print("=========================================")
print("====== K Fold Validation step => %d/%d =======" % (i,k_folds))
print("=========================================")
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode)
valGenerator = Generator(testData,testLabels,batchSize=batchSize,imageSize=imageSize,augment=False,grayMode=grayMode)
try:
model = load_model(weights_path, compile=True)
except Exception as OSError:
pass
model.fit_generator(
trainGenerator,
steps_per_epoch=len(trainData),
epochs=epochs,
validation_data=valGenerator,
validation_steps=len(testData))
i+=1
$endgroup$
$begingroup$
I have this same problem, but this is a non-solution in the sense, that you don't need a generator here. Consider that validation_data = (testData, testLabels) replaces the generator.
$endgroup$
– boomkin
Mar 25 at 14:41
add a comment |
$begingroup$
So, I haven't found any solution regarding this application of cross-validation in fit_generator(), I hope it comes in one update of the Keras package, since cross-validation is an important part of training models.
What I have done so far, basically I split the dataset first then I pass the data and labels to the fit_generator. At the end of each step I save the model, at the beggining of each step I load the preciuos model to continue the training over the same model, but with a different k-fold of the dataset. I'm pasting the part of my code where I use this approach, hope it helps.
## Training with K-fold cross validation
kf = KFold(n_splits=k_folds, random_state=None, shuffle=True)
kf.get_n_splits(images_file_paths)
X = np.array(images_file_paths)
y = np.array(class_labels)
i = 1
for train_index, test_index in kf.split(X):
trainData = X[train_index]
testData = X[test_index]
trainLabels = y[train_index]
testLabels = y[test_index]
print("=========================================")
print("====== K Fold Validation step => %d/%d =======" % (i,k_folds))
print("=========================================")
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode)
valGenerator = Generator(testData,testLabels,batchSize=batchSize,imageSize=imageSize,augment=False,grayMode=grayMode)
try:
model = load_model(weights_path, compile=True)
except Exception as OSError:
pass
model.fit_generator(
trainGenerator,
steps_per_epoch=len(trainData),
epochs=epochs,
validation_data=valGenerator,
validation_steps=len(testData))
i+=1
$endgroup$
$begingroup$
I have this same problem, but this is a non-solution in the sense, that you don't need a generator here. Consider that validation_data = (testData, testLabels) replaces the generator.
$endgroup$
– boomkin
Mar 25 at 14:41
add a comment |
$begingroup$
So, I haven't found any solution regarding this application of cross-validation in fit_generator(), I hope it comes in one update of the Keras package, since cross-validation is an important part of training models.
What I have done so far, basically I split the dataset first then I pass the data and labels to the fit_generator. At the end of each step I save the model, at the beggining of each step I load the preciuos model to continue the training over the same model, but with a different k-fold of the dataset. I'm pasting the part of my code where I use this approach, hope it helps.
## Training with K-fold cross validation
kf = KFold(n_splits=k_folds, random_state=None, shuffle=True)
kf.get_n_splits(images_file_paths)
X = np.array(images_file_paths)
y = np.array(class_labels)
i = 1
for train_index, test_index in kf.split(X):
trainData = X[train_index]
testData = X[test_index]
trainLabels = y[train_index]
testLabels = y[test_index]
print("=========================================")
print("====== K Fold Validation step => %d/%d =======" % (i,k_folds))
print("=========================================")
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode)
valGenerator = Generator(testData,testLabels,batchSize=batchSize,imageSize=imageSize,augment=False,grayMode=grayMode)
try:
model = load_model(weights_path, compile=True)
except Exception as OSError:
pass
model.fit_generator(
trainGenerator,
steps_per_epoch=len(trainData),
epochs=epochs,
validation_data=valGenerator,
validation_steps=len(testData))
i+=1
$endgroup$
So, I haven't found any solution regarding this application of cross-validation in fit_generator(), I hope it comes in one update of the Keras package, since cross-validation is an important part of training models.
What I have done so far, basically I split the dataset first then I pass the data and labels to the fit_generator. At the end of each step I save the model, at the beggining of each step I load the preciuos model to continue the training over the same model, but with a different k-fold of the dataset. I'm pasting the part of my code where I use this approach, hope it helps.
## Training with K-fold cross validation
kf = KFold(n_splits=k_folds, random_state=None, shuffle=True)
kf.get_n_splits(images_file_paths)
X = np.array(images_file_paths)
y = np.array(class_labels)
i = 1
for train_index, test_index in kf.split(X):
trainData = X[train_index]
testData = X[test_index]
trainLabels = y[train_index]
testLabels = y[test_index]
print("=========================================")
print("====== K Fold Validation step => %d/%d =======" % (i,k_folds))
print("=========================================")
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode)
valGenerator = Generator(testData,testLabels,batchSize=batchSize,imageSize=imageSize,augment=False,grayMode=grayMode)
try:
model = load_model(weights_path, compile=True)
except Exception as OSError:
pass
model.fit_generator(
trainGenerator,
steps_per_epoch=len(trainData),
epochs=epochs,
validation_data=valGenerator,
validation_steps=len(testData))
i+=1
edited Mar 11 at 14:12
answered Mar 11 at 13:59
MBoarettoMBoaretto
11
11
$begingroup$
I have this same problem, but this is a non-solution in the sense, that you don't need a generator here. Consider that validation_data = (testData, testLabels) replaces the generator.
$endgroup$
– boomkin
Mar 25 at 14:41
add a comment |
$begingroup$
I have this same problem, but this is a non-solution in the sense, that you don't need a generator here. Consider that validation_data = (testData, testLabels) replaces the generator.
$endgroup$
– boomkin
Mar 25 at 14:41
$begingroup$
I have this same problem, but this is a non-solution in the sense, that you don't need a generator here. Consider that validation_data = (testData, testLabels) replaces the generator.
$endgroup$
– boomkin
Mar 25 at 14:41
$begingroup$
I have this same problem, but this is a non-solution in the sense, that you don't need a generator here. Consider that validation_data = (testData, testLabels) replaces the generator.
$endgroup$
– boomkin
Mar 25 at 14:41
add a comment |
Thanks for contributing an answer to Data Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f37009%2fk-fold-cross-validation-when-using-fit-generator-and-flow-from-directory-in-ke%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Any progress with this issue? I faced with this problem. It seems that it obvious approach if you want use KFold for huge dataset.
$endgroup$
– Oktay
Feb 22 at 16:17
$begingroup$
No, I have not find a solution. The images dataset is not big, so I wanted to use cross validation.
$endgroup$
– Noran
Feb 24 at 7:24
$begingroup$
trainGenerator = Generator(trainData,trainLabels,batchSize=batchSize,imageSize=imageSize,augment=True,grayMode=grayMode) can you share the code where you define the Generator in the above line?
$endgroup$
– Rohan
Mar 27 at 22:16