Я пытаюсь использовать pytorch для двоичной классификации nlp, и мне нужна помощь, чтобы завершить обучение и проверку нейронной сети. Я новичок и впервые использую pytorch, см. код ниже и ошибку...
X_train_tensor = torch.from_numpy(np.asarray(X_train)).type(torch.FloatTensor).to(device)
y_train_tensor = torch.from_numpy(np.asarray(y_train)).type(torch.FloatTensor).unsqueeze(1).to(device)
X_valid_tensor = torch.from_numpy(np.asarray(X_valid)).type(torch.FloatTensor).to(device)
y_valid_tensor = torch.from_numpy(np.asarray(y_valid)).type(torch.FloatTensor).unsqueeze(1).to(device)
X_train_tensor.size()
выход: torch.Size([5438, 768])
y_train_tensor.size()
выход: torch.Size([5438, 1])
criterion = nn.BCELoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3, weight_decay=5e-4)
def binary_acc(preds, y_valid):
y_valid_tag = torch.round(preds)
correct_results = (y_valid_tag == y_valid).float()
acc = correct_results.sum() / len(correct_results)
return acc
def train(model, *var):
epoch_loss = 0
epoch_acc = 0
model.train()
for x in range(X_train_tensor):
optimizer.zero_grad()
predictions = model(X_train_tensor)
loss = criterion(predictions, y_train_tensor)
acc = binary_acc(predictions, y_valid_tensor)
loss.backward()
optimizer.step()
epoch_loss += loss.item()
epoch_acc += acc.item()
return epoch_loss / len(X_train_tensor), epoch_acc / len(X_train_tensor)
def evaluate(model, *var):
epoch_acc = 0
model.eval()
with torch.no_grad():
for X in range(X_valid_tensor):
predictions = model(X_train_tensor)
acc = binary_acc(predictions, y_valid_tensor)
epoch_acc += acc.item()
return epoch_acc / len(X_valid_tensor)
loss=[]
acc=[]
val_acc=[]
for epoch in range(10):
train_loss, train_acc = train(model, X_train_tensor, y_train_tensor, y_valid_tensor)
valid_acc = evaluate(model, X_valid_tensor, y_valid_tensor)
print(f'\tTrain Loss: {train_loss:.3f} | Train Acc: {train_acc*100:.2f}%')
print(f'\t Val. Acc: {valid_acc*100:.2f}%')
loss.append(train_loss)
acc.append(train_acc)
val_acc.append(valid_acc)
ОШИБКА ВЫХОДА: TypeError: только целочисленные тензоры одного элемента могут быть преобразованы в индекс
Пожалуйста, помогите мне это исправить
TypeError Traceback (most recent call last)
in
5 for epoch in range(10):
6
----> 7 train_loss, train_acc = train(model, X_train_tensor, y_train_tensor, y_valid_tensor)
8 valid_acc = evaluate(model, X_valid_tensor, y_valid_tensor)
9
in train(model, *var)
6 model.train()
7
----> 8 for x in range(X_train_tensor):
9
10 optimizer.zero_grad()
TypeError: only integer tensors of a single element can be converted to an index
Подробнее здесь: https://stackoverflow.com/questions/674 ... nverted-to
Pytorch TypeError: только целочисленные тензоры одного элемента могут быть преобразованы в индекс ⇐ Python
Программы на Python
1771246875
Anonymous
Я пытаюсь использовать pytorch для двоичной классификации nlp, и мне нужна помощь, чтобы завершить обучение и проверку нейронной сети. Я новичок и впервые использую pytorch, см. код ниже и ошибку...
X_train_tensor = torch.from_numpy(np.asarray(X_train)).type(torch.FloatTensor).to(device)
y_train_tensor = torch.from_numpy(np.asarray(y_train)).type(torch.FloatTensor).unsqueeze(1).to(device)
X_valid_tensor = torch.from_numpy(np.asarray(X_valid)).type(torch.FloatTensor).to(device)
y_valid_tensor = torch.from_numpy(np.asarray(y_valid)).type(torch.FloatTensor).unsqueeze(1).to(device)
X_train_tensor.size()
выход: torch.Size([5438, 768])
y_train_tensor.size()
выход: torch.Size([5438, 1])
criterion = nn.BCELoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3, weight_decay=5e-4)
def binary_acc(preds, y_valid):
y_valid_tag = torch.round(preds)
correct_results = (y_valid_tag == y_valid).float()
acc = correct_results.sum() / len(correct_results)
return acc
def train(model, *var):
epoch_loss = 0
epoch_acc = 0
model.train()
for x in range(X_train_tensor):
optimizer.zero_grad()
predictions = model(X_train_tensor)
loss = criterion(predictions, y_train_tensor)
acc = binary_acc(predictions, y_valid_tensor)
loss.backward()
optimizer.step()
epoch_loss += loss.item()
epoch_acc += acc.item()
return epoch_loss / len(X_train_tensor), epoch_acc / len(X_train_tensor)
def evaluate(model, *var):
epoch_acc = 0
model.eval()
with torch.no_grad():
for X in range(X_valid_tensor):
predictions = model(X_train_tensor)
acc = binary_acc(predictions, y_valid_tensor)
epoch_acc += acc.item()
return epoch_acc / len(X_valid_tensor)
loss=[]
acc=[]
val_acc=[]
for epoch in range(10):
train_loss, train_acc = train(model, X_train_tensor, y_train_tensor, y_valid_tensor)
valid_acc = evaluate(model, X_valid_tensor, y_valid_tensor)
print(f'\tTrain Loss: {train_loss:.3f} | Train Acc: {train_acc*100:.2f}%')
print(f'\t Val. Acc: {valid_acc*100:.2f}%')
loss.append(train_loss)
acc.append(train_acc)
val_acc.append(valid_acc)
ОШИБКА ВЫХОДА: [b]TypeError: только целочисленные тензоры одного элемента могут быть преобразованы в индекс[/b]
[b]Пожалуйста, помогите мне это исправить[/b]
TypeError Traceback (most recent call last)
in
5 for epoch in range(10):
6
----> 7 train_loss, train_acc = train(model, X_train_tensor, y_train_tensor, y_valid_tensor)
8 valid_acc = evaluate(model, X_valid_tensor, y_valid_tensor)
9
in train(model, *var)
6 model.train()
7
----> 8 for x in range(X_train_tensor):
9
10 optimizer.zero_grad()
TypeError: only integer tensors of a single element can be converted to an index
Подробнее здесь: [url]https://stackoverflow.com/questions/67440324/pytorch-typeerror-only-integer-tensors-of-a-single-element-can-be-converted-to[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия