我正在嘗試從資料集中批量提取資料以訓練模型這是代碼的一部分
#defining the loss,optimizer and training function for the neural network
def train_network(model,optimizer,loss_function,num_epochs,batch_size,x_train,y_train):
#start model training
model.train()
loss_for_every_epoch=nn.ModuleList()
for epoch in range(num_epochs):
train_loss=0.0
for i in range(0,x_train.shape[0],batch_size):
#extract train batch from x and y
input_data=x_train[i:min(x_train.shape[0]),i batch_size]
labels=y_train[i:min(y_train.shape[0]),i batch_size]
#set gradients to zero before beginning optimization
optimizer.zero_grad()
#forwad pass
output_data=model(input_data)
#calculate loss
loss=loss_function(output_data,labels)
#backpropagate
loss.backward()
#update weights
optimizer.step()
train_loss =loss.item()*batch_size
print("Epoch: {} - Loss:{:.4f}".format(epoch 1,train_loss ))
loss_for_every_epoch.extend([train_loss])
#predict
y_test_prediction=model(x_test)
a=np.where(y_test_prediction>0.5,1,0)
return loss_for_every_epoch
#create an object of the class
model=neuralnetwork()
#define the loss function
loss_function = nn.BCELoss()#binary cross entropy loss function
#define optimizer
adam_optimizer=torch.optim.Adam(params=model.parameters(),lr=0.001)
#define epochs and batch size
number_of_epochs=100
batch_size=16
#Calling the function for training and pass model, optimizer, loss and related paramters
adam_loss=train_network(model,adam_optimizer,loss_function,number_of_epochs,batch_size,x_train,y_train)
但我收到以下錯誤
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
g:\My Drive\CODE\pythondatascience\simpleneuralnetwork.ipynb Cell 7' in <cell line: 11>()
9 batch_size=16
10 #Calling the function for training and pass model, optimizer, loss and related paramters
---> 11 adam_loss=train_network(model,adam_optimizer,loss_function,number_of_epochs,batch_size,x_train,y_train)
g:\My Drive\CODE\pythondatascience\simpleneuralnetwork.ipynb Cell 5' in train_network(model, optimizer, loss_function, num_epochs, batch_size, x_train, y_train)
7 train_loss=0.0
8 for i in range(0,4000,batch_size):
9 #extract train batch from x and y
---> 10 input_data=x_train[i:min(x_train.shape[0]),i batch_size]
11 labels=y_train[i:min(y_train.shape[0]),i batch_size]
12 #set gradients to zero before beginning optimization
TypeError: 'int' object is not iterable
錯誤的原因可能是什么原因導致這些用于撰寫程式的源以完全相同的方式完成了它
除此之外,有人可以具體向我解釋這條線的含義
input_data=x_train[i:min(x_train.shape[0]),i batch_size]
x_train 是一個資料集
uj5u.com熱心網友回復:
input_data=...正在獲取您的資料片段以將其用作訓練演算法的輸入。
盡管比較陳述句無效 (x_train.shape應該回傳一個整數元組,但如果min(x_train.shape[0])不將它與其他東西進行比較,你就不能這樣做。我猜你應該有input_data=x_train[i:min(x_train.shape[0],i batch_size)]。你也有同樣的問題y_train。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487597.html
上一篇:Numpy:如何將單個陣列堆疊成更大陣列的每一行并將其變成二維陣列?
下一篇:計算一維numpy陣列中的間隙數
