При попытке создать нейронную сеть, которая будет классифицировать изображения мужчин и женщин, в моей трассировке произошли две ошибки. Одним из них был TypeError: только массивы размера 1 можно преобразовать в Python скаляры, а другим - ValueError: установка элемента массива с последовательностью. Кто-нибудь может помочь? Я пробовал другие предложения сообщений stackoverflow, но, попробовав их все, они по-прежнему вызывают у меня ту же проблему. Вот мой код ниже:
import tflearn
import tensorflow
import matplotlib.pyplot as plt
import os
import cv2
import time
import numpy
from PIL import *
#inputs
MALE = "C:\\Users\\Robin\\Desktop\\jasonBot\\male"
FEMALE = "C:\\Users\\Robin\\Desktop\\jasonBot\\female"
TRAIN_X = []
TRAIN_Y = []
#outputs
LABELS = {MALE:0, FEMALE:1}
for male in os.listdir(MALE):
path = os.path.join(MALE, male)
gray_img = Image.open(path).convert("LA").resize((50,50))
processed_male_image = numpy.array(gray_img)
TRAIN_X.append([numpy.array(processed_male_image),numpy.eye(2)[LABELS[MALE]]])
for female in os.listdir(FEMALE):
path = os.path.join(FEMALE, female)
gray_img = Image.open(path).convert("LA").resize((50,50))
processed_female_image = numpy.array(gray_img)
TRAIN_X.append([numpy.array(processed_female_image), numpy.eye(2)[LABELS[FEMALE]]])
print("The training data list is ",len(TRAIN_X),"long")
print(TRAIN_X[0])
print(numpy.array(TRAIN_X[0]).shape)
numpy.random.shuffle(TRAIN_X)
for label in TRAIN_X:
label_num = 0
TRAIN_Y.append(TRAIN_X[label_num])
label_num += 1
print("item added")
tensorflow.reset_default_graph()
size = len(TRAIN_X[0])
net = tflearn.input_data(shape=[None, size])
net = tflearn.fully_connected(net, 20)
net = tflearn.fully_connected(net, 20)
net = tflearn.fully_connected(net, 20)
net = tflearn.fully_connected(net, 20)
net = tflearn.fully_connected(net, len(TRAIN_Y[0]), activation="softmax")
net = tflearn.regression(net)
model = tflearn.DNN(net)
print(TRAIN_X[0])
print(numpy.array(TRAIN_X[0]).shape)
model.fit(TRAIN_X, TRAIN_Y, n_epoch=2000, batch_size = 20, show_metric=True)
и вот ошибка
TypeError: only size-1 arrays can be converted to Python scalars
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "main.py", line 65, in <module>
model.fit(TRAIN_X, TRAIN_Y, n_epoch=2000, batch_size = 20, show_metric=True)
File "C:\Users\Robin\anaconda3\envs\env_pytorch\lib\site-packages\tflearn\models\dnn.py", line 216, in fit
callbacks=callbacks)
File "C:\Users\Robin\anaconda3\envs\env_pytorch\lib\site-packages\tflearn\helpers\trainer.py", line 339, in fit
show_metric)
File "C:\Users\Robin\anaconda3\envs\env_pytorch\lib\site-packages\tflearn\helpers\trainer.py", line 818, in _train
feed_batch)
File "C:\Users\Robin\anaconda3\envs\env_pytorch\lib\site-packages\tensorflow_core\python\client\session.py", line 956, in run
run_metadata_ptr)
File "C:\Users\Robin\anaconda3\envs\env_pytorch\lib\site-packages\tensorflow_core\python\client\session.py", line 1149, in _run
np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
File "C:\Users\Robin\anaconda3\envs\env_pytorch\lib\site-packages\numpy\core\_asarray.py", line 85, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence.