Closed jsihunh closed 3 years ago
What I did in the paper is that I added clouds to the last 50 images (test data) and let DINCAE reconstruct these missing data and then I validated them outside DINCAE (training and inference of test data is the same step). What that be an option for you?
I'm still confused about 50 images for validation.
" I added clouds to the last 50 images (test data) " = 1) you put 50 images on the last sequence of the training dataset(25yr SST)? or 2) put only separated 50 images(test data) run the DINCAE model(both training and test phase).
" validated them outside DINCAE (training and inference of test data is the same step)." =
Can I understand this phrase to run a model using only 50 images as input data and model conducted training phase
I'm really wondering how to validate using 50 images data with cloud mask (1) input data shape, and (2) the question that I mentioned above, using only 50 images as input data or input dataset contains training and test set. (3) revise some part of code in test session run. The first case) As I understand the following cases separated the input dataset e.g) input dataset( train + test dataset) train session = 25yr SST only calculate RMSE test session = 50 images and save sample
the second case) As I understand the following cases as 50 images in the input dataset e.g) input dataset( test dataset) delete (train session = 25yr SST only calculate RMSE) Not calculate RMSE Run (test session) = 50 images (for reconstruction) and save sample
My input file has 5266 time instances. For the time instance from 5217 to 5266 (50 images), I removed some data for validation by adding even more clouds before giving this data to DINCAE. (Inside DINCAE, there are even more data masked as missing to prevent overfitting, but this is at another level and independent from this question)
train_datagen
and test_datagen
both represent the full time series (train_len
= test_len
= 5266 time instances).
train_datagen
adds noise to prevent overfitting which is disabled for test_datagen
:
# add missing data during training randomly
# (note: these added "clouds" are *different* from the data masked in the last 50 images
if train:
#imask = random.randrange(0,missing.shape[0])
imask = random.randrange(0,ntime)
for j in range(ndata):
selmask = missing[j][imask,:,:]
xin[:,:,2*j][selmask] = 0
xin[:,:,2*j+1][selmask] = 0
# add jitter
for j in range(ndata):
xin[:,:,2*j] += jitter_std[j] * np.random.randn(sz[1],sz[2])
xin[:,:,2*j + 2*ndata + 4] += jitter_std[j] * np.random.randn(sz[1],sz[2])
xin[:,:,2*j + 4*ndata + 4] += jitter_std[j] * np.random.randn(sz[1],sz[2])
The output of DINCAE is the full time series of 5266 images, from which I extracted the last 50 images for validation.
Thank you for your sufficient explanation about my question. I'm really clear to understand your validation method.
Thanks for your confirmation!
Congratulation for your paper!
Jung, S.; Yoo, C.; Im, J. High-Resolution Seamless Daily Sea Surface Temperature Based on Satellite Data Fusion and Machine Learning over Kuroshio Extension. Remote Sens. 2022, 14, 575. https://doi.org/10.3390/rs14030575
I added your publication to the list here: https://github.com/gher-ulg/DINCAE.jl/tree/071fdb5adea1a63d55472a7957a952044368fcfc#publications
All the best, Alex
Thank you so much. Your impressive paper provided me with a great deal of research knowledge. Congratulations on your new publication this time. If there is an opportunity, I would like to solicit feedback on the research I am conducting.
Sihun
Thanks 😀! Yes, do not hesitate to reach out!
### Before I ask about my problem, I really appreciate a kind response from the author, Thank you.
I continuously fail to adapt the trained DINCAE model on the test dataset when I run the pre-trained model on the test dataset, an unidentified error message came from python. May I ask how can I adapt the pre-trained model? Can anyone succeed in my question?
model_call_path="/share/ocean/SSS/SMAP_SSS_JPL_L2/G_2_stack_map_EA_3X3window/result/window5_RF_only/" os.chdir(model_call_path) sess = tf.compat.v1.Session() saver=tf.train.import_meta_graph('./best_model.ckpt.meta') saver.restore(sess,tf.train.latest_checkpoint(model_call_path))
(skip build structure code)
Error message FailedPreconditionError: 2 root error(s) found. (0) Failed precondition: Attempting to use uninitialized value conv2d_3/kernel_1 [[node conv2d_3/kernel_1/read (defined at:506) ]]
[[Sqrt_2/_131]]
(1) Failed precondition: Attempting to use uninitialized value conv2d_3/kernel_1
[[node conv2d_3/kernel_1/read (defined at :506) ]]
0 successful operations.
0 derived errors ignored.
I'm really want to adapt it for a separated cross-validation dataset. from the paper "sess" was called above picture and run the trained model using the session as I mentioned first.