AttributeError: объект «numpy.ndarray» не имеет атрибута «get_shape»?

Поскольку я запускаю beginner.ipynb из введение Google в tensorflow локально, выполнение прерывается на

predictions = model(x_train[:1]).numpy()

со следующей ошибкой:


AttributeError                            Traceback (most recent call last)

<ipython-input-15-6d3178b039b4> in <module>
----> 1 predictions = model(x_train[:1]).numpy()
      2 # print( type( predictions ) )
      3 # predictions = tf.convert_to_tensor( model(x_train[:1]) )
      4 predictions
      5 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in __call__(self, inputs, *args, **kwargs)
    590       else:
    591         # Eager execution on data tensors.
--> 592         outputs = self.call(inputs, *args, **kwargs)
    593         self._handle_activity_regularization(inputs, outputs)
    594         return outputs

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\sequential.py in call(self, inputs, training, mask)
    228   def call(self, inputs, training=None, mask=None):
    229     if self._is_graph_network:
--> 230       return super(Sequential, self).call(inputs, training=training, mask=mask)
    231 
    232     outputs, _ = self._call_and_compute_mask(

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\network.py in call(self, inputs, training, mask)
    813     outputs, _ = self._run_internal_graph(inputs,
    814                                           training=training,
--> 815                                           mask=masks)
    816     return outputs
    817 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\network.py in _run_internal_graph(self, inputs, training, mask)
   1000                   output_tensors = layer(computed_tensor, **kwargs)
   1001                 else:
-> 1002                   output_tensors = layer.call(computed_tensor, **kwargs)
   1003                 if hasattr(layer, 'compute_mask'):
   1004                   output_masks = layer.compute_mask(computed_tensor,

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\core.py in call(self, inputs)
    553                  array_ops.shape(inputs)[0], -1))
    554     if not context.executing_eagerly():
--> 555       outputs.set_shape(self.compute_output_shape(inputs.get_shape()))
    556     return outputs
    557 

AttributeError: 'numpy.ndarray' object has no attribute 'get_shape'

Я нашел аналогичный вопрос здесь, но не смог применить предложенное исправление.

Как заставить код работать? Почему один и тот же код работает нормально в коллаборации, но не работает на моем локальном компьютере?


person mavzolej    schedule 20.04.2020    source источник
comment
обновите свой полный код и трассировку ошибок, если это возможно   -  person AzyCrw4282    schedule 20.04.2020
comment
@AzyCrw4282, готово!   -  person mavzolej    schedule 20.04.2020
comment
Это сообщение об ошибке ясно показывает, что вы не используете predictions = model(x_train[:1]).numpy(). Вы внесли кучу изменений, и мы не можем видеть их в полной мере.   -  person user2357112 supports Monica    schedule 20.04.2020
comment
@user2357112-supports-Моника, извините, забыл обновить. Я просто пробовал различные изменения. Но это был исходный код, который не работал.   -  person mavzolej    schedule 20.04.2020
comment
Я нашел этот пост, потому что у меня точно такая же проблема. Как сказал @AzyCrw4282, кажется, что решение — обновить полный код. Но, как совсем новичок, я не понимаю смысла: что значит обновить полный код? Не могли бы вы объяснить, что я должен сделать? Что за манипуляция? Извините, если вопрос-пустышка...   -  person Andrew    schedule 06.05.2020
comment
По-видимому, проблема заключалась в использовании неправильной версии tensorflow. Убедитесь, что вы установили tensorflow2.   -  person mavzolej    schedule 06.05.2020
comment
@ Андрей, извините за беспокойство. Первоначальный пост с вопросом не содержал полного кода и трассировки ошибок, поэтому я написал это "update your full code", чтобы попросить ОП обновить это. Это не решение. Чтобы решить эту проблему, используйте Tensorflow2.x - см. ответ в сообщении ниже.   -  person AzyCrw4282    schedule 07.05.2020


Ответы (1)


Ответ, как упоминалось в OP, заключается в использовании tensorflow2. Хотя не удалось выяснить основную причину этой проблемы, похоже, что она может быть связана с неподдерживаемой функциональностью в tensorflow1.x.

См. здесь, чтобы узнать об изменениях из 1.x и 2.x

person AzyCrw4282    schedule 06.05.2020