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

Trying to fine tune with different data, But getting dimensionality mismatched for tensor #18

Open
brojokm opened this issue May 1, 2018 · 7 comments

Comments

@brojokm
Copy link

brojokm commented May 1, 2018

I am getting the following error while trying to fine tune

InvalidArgumentError (see above for traceback): Assign requires shapes of both tensors to match. lhs shape= [326,64] rhs shape= [1427,64]
	 [[Node: save/Assign_746 = Assign[T=DT_FLOAT, _class=["loc:@char_mat"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](char_mat, save/RestoreV2:746)]]
@localminimum
Copy link
Owner

Hi,
Try re running the config.py --mode prepro if you make changes regarding embedding matrices

@brojokm
Copy link
Author

brojokm commented May 2, 2018

@localminimum
If I change training file then after running preprocessing, embedding file will change and its dimension is mismatched with the existing one. That is what I have noticed as per my knowledge.
Note: dimension does not mean embedding vector size of char/word.. Basically its giving error because number of words and chars are different. You can see here lhs shape= [326,64] rhs shape= [1427,64]

kindly help me to resolve this.

@localminimum
Copy link
Owner

It's not that the number of words and chars are different. tf.assign happens when the pretrained weights are loaded.

It seems like you are trying to load a trained model where the character embeddings size is different to your current character embeddings size. Try training again from scratch with your new char embeddings.

@brojokm
Copy link
Author

brojokm commented May 3, 2018 via email

@localminimum
Copy link
Owner

You can just train the new character embeddings from scratch while using the pretrained weights for other weights. But I don't have that feature implemented here. You might have to manually allocate each weight.

@brojokm
Copy link
Author

brojokm commented May 3, 2018

Hi! I'm new to tensorflow, and while I understand that I need to manually allocate weights to layers for the non-character embedding layers (it seems that word embeddings are non-trainable). Also, I don't understand how to restore only selected portions from checkpoint. It'll be really helpful if you could elaborate on what I need to do (or sample code)
Thanks in advance :)

@anshulsolanki
Copy link

@brojokm and @localminimum were you able to resolve this.
I am getting the same error.
Any help on how to "just train the new character embeddings from scratch while using the pretrained weights for other weights" is appreciated.

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

3 participants