前提・実現したいこと
f文字列がよくわかないです。
こちら
を参考に見てみたのですが、少し違うような気がします。(こちらに載ってなかったので、ご質問させていただきました。)
具体的には、
1,{i:2}でどうして、このような 表記になるのか?(写真)b:4も同様です。
2,10*b:6も同様です。
3,(loss.item():10.8f)の10はなんですか?8は、小数点だと思うのですが。
該当のソースコード
print(f'epoch: {i:2} batch: {b:4} [{10*b:6}/8000] loss: {loss.item():10.8f} \ accuracy: {trn_corr.item()*100/(10*b):7.3f}%')
###Original
Original import time start_time = time.time() epochs = 3 max_trn_batch = 800 max_tst_batch = 300 train_losses = [] test_losses = [] train_correct = [] test_correct = [] for i in range(epochs): trn_corr = 0 tst_corr = 0 # Run the training batches for b, (X_train, y_train) in enumerate(train_loader): # Limit the number of batches if b == max_trn_batch: break b+=1 # Apply the model y_pred = CNNmodel(X_train) loss = criterion(y_pred, y_train) # Tally the number of correct predictions predicted = torch.max(y_pred.data, 1)[1] batch_corr = (predicted == y_train).sum() trn_corr += batch_corr # Update parameters optimizer.zero_grad() loss.backward() optimizer.step() # Print interim results if b%200 == 0: print(f'epoch: {i:2} batch: {b:4} [{10*b:6}/8000] loss: {loss.item():10.8f} \ accuracy: {trn_corr.item()*100/(10*b):7.3f}%') train_losses.append(loss) train_correct.append(trn_corr) # Run the testing batches with torch.no_grad(): for b, (X_test, y_test) in enumerate(test_loader): # Limit the number of batches if b == max_tst_batch: break # Apply the model y_val = CNNmodel(X_test) # Tally the number of correct predictions predicted = torch.max(y_val.data, 1)[1] tst_corr += (predicted == y_test).sum() loss = criterion(y_val, y_test) test_losses.append(loss) test_correct.append(tst_corr) print(f'\nDuration: {time.time() - start_time:.0f} seconds') # print the time elapsed
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
Python3 (3.8)
Jupyter Lab version latest
macbookpro 16 latest
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。