Получение Рок Бумажные Ножницы - PullRequest
0 голосов
/ 04 мая 2020

У меня проблема, когда я хочу получить изображение ножниц, я хочу, чтобы результат был таким же, как на картинке. Я пытаюсь получить матрицу, как [1,0,0] для бумаги, [0,1,0] для камня и [0,0,1] для ножниц, но в конце кода это дает ошибка.

import numpy as np
from google.colab import files
from keras.preprocessing import image
import matplotlib.pyplot as plt
import matplotlib.image as mpimage
%matplotlib inline

uploaded = files.upload()
for i in uploaded.keys():
  path = i
  img = image.load_img(path, target_size = (150,150))
  imgplot = plt.imshow(img)
  x = image.img_to_array(img)
  x = np.expand_dims(x, axis = 0)

  images = np.vstack([x])
  classes = model.predict(images, batch_size = 24)
  print(i)
  print(classes)
  if classes == [1,0,0]:
    print('paper')
  elif classes == [0,1,0]:
    print('rock')
  else:
    print('scissors')

и ошибки

Saving 1i1dlQrE6JnhYXE4.png to 1i1dlQrE6JnhYXE4 (1).png
1i1dlQrE6JnhYXE4.png
[[0. 0. 1.]]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-424-20a0d9bb67f4> in <module>()
     18   print(i)
     19   print(classes)
---> 20   if classes == [1,0,0]:
     21     print('paper')
     22   elif classes == [0,1,0]:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

как я могу исправить код? и бумага результата = бумага, камень = камень и ножницы = ножницы

1 Ответ

1 голос
/ 04 мая 2020

Способ сделать это - использовать-

classes == [[1., 0., 0.]]

Но это не сработает всегда, на самом деле, это сработает только в очень ограниченных случаях. Итак, вместо этого вы можете использовать этот фрагмент кода, который извлекает максимальное значение из списка -

max_index = classes[0].index(max(classes[0]))

, а затем сравнивает max_index вот так -

if max_index == 0:
  print("rock")
elif max_index == 1:
  print("paper")
else:
  print("scissor")

Также обратите внимание, что это очень маленький выборочный интервал, поэтому я жестко запрограммировал print(), однако в идеале вы хотели бы иметь справочную таблицу, и вы могли бы легко это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...