Anan Srivastava Ответов: 1

Как я могу изменить функцию потерь, когда изменяется форма моих данных?


Поскольку мои данные слишком велики, я использую pd.read_csv(",chunksize=). Я использую categorical_crossentropy однако в качестве функции потерь на последнем отрезке у меня есть только одна цель. Так что я получаю ошибку:

Вы передаете целевой массив shape (2110, 1), используя в качестве потери categorical_crossentropy.

Что я уже пробовал:

Теперь я знаю, что могу использовать binary_crossentropy за этот последний кусок. Так вот что я сделал:

X_train, X_test, y_train, y_test = train_test_split(train_data, train_labels, shuffle=True, test_size=0.3)
if y_train.shape[1] == 1:
   loss = 'binary_crossentropy'
else:
   loss = 'categorical_crossentropy'

Когда я делаю это, я получаю ошибку:

IndexError: index 1 is out of bounds for axis 0 with size 1

Мои данные закодированы в одну горячую точку. Как я могу устранить эту ошибку? Спасибо

1 Ответов

Рейтинг:
0

phil.o

Дикое предположение:

if y_train.shape[0] == 1:


Richard MacCutchan

Не так дико, более обдуманно.

Anan Srivastava

Привет, спасибо за ваш ответ, но это не может быть правильно. Ошибка возникает только в последнем фрагменте. y_train.shape[0] == 1 даст мне 2110. Пожалуйста, дайте мне знать, если я должен поделиться больше своего кода.

phil.o

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

Anan Srivastava

Спасибо. Я застрял на нем на некоторое время. Постараюсь разобраться и обратиться за помощью, если не смогу

phil.o

Серьезно, вы должны попробовать отладку :) Это невероятно полезно, это даже абсолютно обязательно, если вы серьезно относитесь к развитию. Кроме того, это может быть очень весело.
В конечном итоге мы можем предоставить некоторые ссылки, чтобы вы могли начать отладку python.