Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

image pixel value #22

Closed
oftenliu opened this issue May 11, 2018 · 7 comments
Closed

image pixel value #22

oftenliu opened this issue May 11, 2018 · 7 comments

Comments

@oftenliu
Copy link

excuse me,in function _preprocess_image(image) (Mjsynth.py), why rescale the pixels value to float([-0.5,0.5]) not float([0,1]). can u tell me why? tks

@weinman
Copy link
Owner

weinman commented May 12, 2018

Whereas most activation functions (ReLU, sigmoid, tanh) have their phase change at zero, and random weight initializers tend to be symmetric about this point also, it's best to keep your raw input data nominally centered around zero.

@oftenliu
Copy link
Author

so, like Batch Normalization?

@oftenliu
Copy link
Author

and another question is that in last layer, the output should be the probability of each char, but you use Relu as activation function. why not softmax

@weinman
Copy link
Owner

weinman commented May 13, 2018

Yes, similar to batch norm. The CTC loss layer utilizes raw scores as their input, taking the softmax internally.

@oftenliu
Copy link
Author

ho, i use your project to train my plate data, the num of chars classes is 66,i change the num from 63 to 67 in "logits = model.rnn_layers( features, sequence_length, 66) " [train.py, line number = 178 ],and the failure message occurs like this:

Caused by op 'save/Assign_109', defined at:
File "D:/learn/ocr/cnn_lstm_ctc_ocr-master/ocr_cnn_lstm_ctc/src/train.py", line 209, in
tf.app.run()
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 126, in run
_sys.exit(main(argv))
File "D:/learn/ocr/cnn_lstm_ctc_ocr-master/ocr_cnn_lstm_ctc/src/train.py", line 193, in main
save_model_secs=150)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\util\deprecation.py", line 250, in new_func
return func(*args, **kwargs)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 318, in init
self._init_saver(saver=saver)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 466, in _init_saver
saver = saver_mod.Saver()
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 1338, in init
self.build()
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 1347, in build
self._build(self._filename, build_save=True, build_restore=True)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 1384, in _build
build_save=build_save, build_restore=build_restore)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 835, in _build_internal
restore_sequentially, reshape)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 494, in _AddRestoreOps
assign_ops.append(saveable.restore(saveable_tensors, shapes))
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 185, in restore
self.op.get_shape().is_fully_defined())
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\ops\state_ops.py", line 283, in assign
validate_shape=validate_shape)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_state_ops.py", line 63, in assign
use_locking=use_locking, name=name)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 3392, in create_op
op_def=op_def)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1718, in init
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access

InvalidArgumentError (see above for traceback): Assign requires shapes of both tensors to match. lhs shape= [67] rhs shape= [63]
[[Node: save/Assign_109 = Assign[T=DT_FLOAT, _class=["loc:@rnn/logits/bias"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](rnn/logits/bias, save/RestoreV2:109)]]

Traceback (most recent call last):
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1322, in _do_call
return fn(*args)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1307, in _run_fn
options, feed_dict, fetch_list, target_list, run_metadata)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1409, in _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [67] rhs shape= [63]
[[Node: save/Assign_109 = Assign[T=DT_FLOAT, _class=["loc:@rnn/logits/bias"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](rnn/logits/bias, save/RestoreV2:109)]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:/learn/ocr/cnn_lstm_ctc_ocr-master/ocr_cnn_lstm_ctc/src/train.py", line 209, in
tf.app.run()
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 126, in run
_sys.exit(main(argv))
File "D:/learn/ocr/cnn_lstm_ctc_ocr-master/ocr_cnn_lstm_ctc/src/train.py", line 196, in main
with sv.managed_session(config=session_config) as sess:
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\contextlib.py", line 81, in enter
return next(self.gen)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 1000, in managed_session
self.stop(close_summary_writer=close_summary_writer)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 828, in stop
ignore_live_threads=ignore_live_threads)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\coordinator.py", line 389, in join
six.reraise(*self._exc_info_to_raise)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\six.py", line 693, in reraise
raise value
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 989, in managed_session
start_standard_services=start_standard_services)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 726, in prepare_or_wait_for_session
init_feed_dict=self._init_feed_dict, init_fn=self._init_fn)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\session_manager.py", line 279, in prepare_session
config=config)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\session_manager.py", line 207, in _restore_checkpoint
saver.restore(sess, ckpt.model_checkpoint_path)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 1802, in restore
{self.saver_def.filename_tensor_name: save_path})
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 900, in run
run_metadata_ptr)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1135, in _run
feed_dict_tensor, options, run_metadata)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1316, in _do_run
run_metadata)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1335, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [67] rhs shape= [63]
[[Node: save/Assign_109 = Assign[T=DT_FLOAT, _class=["loc:@rnn/logits/bias"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](rnn/logits/bias, save/RestoreV2:109)]]

Caused by op 'save/Assign_109', defined at:
File "D:/learn/ocr/cnn_lstm_ctc_ocr-master/ocr_cnn_lstm_ctc/src/train.py", line 209, in
tf.app.run()
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 126, in run
_sys.exit(main(argv))
File "D:/learn/ocr/cnn_lstm_ctc_ocr-master/ocr_cnn_lstm_ctc/src/train.py", line 193, in main
save_model_secs=150)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\util\deprecation.py", line 250, in new_func
return func(*args, **kwargs)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 318, in init
self._init_saver(saver=saver)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\supervisor.py", line 466, in _init_saver
saver = saver_mod.Saver()
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 1338, in init
self.build()
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 1347, in build
self._build(self._filename, build_save=True, build_restore=True)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 1384, in _build
build_save=build_save, build_restore=build_restore)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 835, in _build_internal
restore_sequentially, reshape)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 494, in _AddRestoreOps
assign_ops.append(saveable.restore(saveable_tensors, shapes))
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\training\saver.py", line 185, in restore
self.op.get_shape().is_fully_defined())
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\ops\state_ops.py", line 283, in assign
validate_shape=validate_shape)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_state_ops.py", line 63, in assign
use_locking=use_locking, name=name)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 3392, in create_op
op_def=op_def)
File "D:\software\cuda\Anaconda2-4.3.1\envs\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1718, in init
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access

InvalidArgumentError (see above for traceback): Assign requires shapes of both tensors to match. lhs shape= [67] rhs shape= [63]
[[Node: save/Assign_109 = Assign[T=DT_FLOAT, _class=["loc:@rnn/logits/bias"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](rnn/logits/bias, save/RestoreV2:109)]]

this means i load 67 elements into variable with 63 elements , so my channges is invalid.

can you guide me to change this. thank you very much

@weinman
Copy link
Owner

weinman commented Jun 14, 2018

@oftenliu I don't have any clear ideas why this would happen. One long-shot possibility is that you'd trained and saved a 63-dim model checkpoint (it's automatic) before making the change. train.py loads an existing checkpointed model (again, automatically), so that could be the case of the discrepancy.

To verify you're starting from scratch, either make sure ROOT/data/model is deleted or you use a different path for the --output flag.

@oftenliu
Copy link
Author

oftenliu commented Jul 5, 2018

Perfectly, As you said,i saved a 63-dim model checkpoint before making the change. You are really something!!! thank you

@weinman weinman closed this as completed Jul 5, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants