iamaaditya / VQA_Demo

Visual Question Answering Demo on pretrained model
http://iamaaditya.github.io/2016/04/visual_question_answering_demo_notebook
MIT License
242 stars 133 forks source link

image_features[0,:] = get_image_model(CNN_weights_file_name).predict(im)[0] ValueError: could not broadcast input array from shape (1000) into shape (4096) #23

Open yashkark opened 5 years ago

yashkark commented 5 years ago

keras version 2.2.4 tensorflow version 1.12.0

Archan2607 commented 5 years ago

Downgrade your keras version to 2.0, it will work.

AmrataRamchandani commented 5 years ago

The new error arises by downgrading the keras version. @iamaaditya Is there any other way out for this problem ?

akyso168 commented 5 years ago

You need to remove the top layers of the pre-trained VGG and keep the Dense layer of 4096 as your output

lzy119 commented 3 years ago

@yashkark @AmrataRamchandani Hello, I have the same problem. Have you solved the problem? Can you share with us how to solve it? Thank you very much!

Dishank99 commented 3 years ago

did any one find any working solution for this issue?

Shahidkhan990 commented 3 years ago

I have facing this issue can anyone help?

AttributeError Traceback (most recent call last) ~\RobotLab\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py in setattr(self, name, value) 2260 try: -> 2261 super(tracking.AutoTrackable, self).setattr(name, value) 2262 except AttributeError:

AttributeError: can't set attribute

During handling of the above exception, another exception occurred:

AttributeError Traceback (most recent call last)

in ----> 1 model_vgg = get_image_model(CNN_weights_file_name) 2 plot_model(model_vgg, to_file='model_vgg.png') in get_image_model(CNN_weights_file_name) 3 with the weights. Requires the file VGG.py inside models/CNN ''' 4 from models.CNN.VGG import VGG_16 ----> 5 image_model = VGG_16(CNN_weights_file_name) 6 image_model.layers.pop() 7 image_model.layers.pop() ~\OneDrive\Documents\Process Studio Workspace\VQA_Demo-master\models\CNN\VGG.py in VGG_16(weights_path) 102 103 #Remove the last two layers to get the 4096D activations --> 104 model = pop(model) 105 model = pop(model) 106 ~\OneDrive\Documents\Process Studio Workspace\VQA_Demo-master\models\CNN\VGG.py in pop(model) 22 model.outbound_nodes = [] 23 else: ---> 24 model.layers[-1].outbound_nodes = [] 25 model.outputs = [model.layers[-1].output] 26 model.built = False ~\RobotLab\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py in __setattr__(self, name, value) 2264 ('Can\'t set the attribute "{}", likely because it conflicts with ' 2265 'an existing read-only @property of the object. Please choose a ' -> 2266 'different name.').format(name)) 2267 return 2268 AttributeError: Can't set the attribute "outbound_nodes", likely because it conflicts with an existing read-only @property of the object. Please choose a different name.
svical commented 2 years ago

Finally, I overcame this issue. It's a package version problem. Use python==3.5, tensorflow==1.2.0, keras==2.0.6, scikit-learn==0.18.1, spacy==2.0.2, opencv-python==3.2.0.7 and it will work. I have uploaded my anaconda env at https://drive.google.com/file/d/1-9QUB7ho3jzXmFN2eM-6K4O5uvkGAOGZ/view?usp=sharing.