質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2083閲覧

shape '[-1, 884736]' is invalid for input of size 150994944のエラー解決法について

uram

総合スコア25

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/02/06 12:09

前提・実現したいこと

下記のコマンドを実行した際にエラーが出ました。

発生している問題・エラーメッセージ

エラーメッセージ
shape '[-1, 884736]' is invalid for input of size 150994944

該当のソースコード

num_classes=10 class Net(nn.Module): def __init__(self): super(Net,self).__init__() self.conv1 = nn.Conv2d(3,32,3,padding=(1,1),padding_mode="zeros") self.dropout1 = nn.Dropout2d(0.5) self.conv2 = nn.Conv2d(32,64,3,padding=(1,1),padding_mode="zeros") self.dropout2 = nn.Dropout2d(0.5) self.fc1=nn.Linear(96*96*96,128) self.dropout3=nn.Dropout(0.5) self.fc2=nn.Linear(128,10) def forward(self, x): x = F.relu(self.conv1(x)) x = self.dropout1(x) x = F.relu(self.conv2(x)) x = self.dropout2(x) x= x.view(-1,96*96*96) x = F.relu(self.fc1(x)) x = self.dropout3(x) x = F.relu(x) return x device="cuda" if torch.cuda.is_available() else "cpu" model = Net().to(device) model device criterion=nn.CrossEntropyLoss() optimizer=optim.Adam(model.parameters(),lr=0.01) def train_step(x,t): model.train() preds=model(x) loss=criterion(preds,t) optimizer.zero_grad() loss.backward() optimizer.step() return loss,preds def test_step(x,t): model.eval() preds=model(x) loss=criterion(preds,t) return loss,preds class EarlyStopping: def __init__(self, patience=10, verbose=0): self.epoch=0 self.pre_loss=float("inf") self.patience=patience self.verbose=verbose def __call__(self,current_loss): if self.pre_loss < current_loss: self.epoch +=1 if self.epoch > self.patience: if self.verbose: print("Early Stopping") return True else: self.epoch=0 self.pre_loss=current_loss return False epochs =100 history={"loss":[],"accuracy":[],"test_loss":[],"test_accuracy":[]} ers=EarlyStopping(patience=5 ,verbose=1) for epoch in range(epochs): train_loss = 0 train_acc = 0 test_loss = 0 test_acc = 0 for (x,t) in train_loader: x, t = x.to(device), t.to(device) loss,preds = train_step(x,t) train_loss += loss.item() train_acc += accuracy_score(t.tolist(),preds.argmax(dim=-1).tolist()) for (x,t) in val_loader: x, t = x.to(device), t.to(device) loss,preds = test_step(x,t) test_loss += loss.item() test_acc += accuracy_score(t.tolist(),preds.argmax(dim=-1).tolist()) avg_train_loss = train_loss / len(train_loader) avg_train_acc = train_loss / len(train_loader) avg_test_loss = test_loss / len(val_loader) avg_test_acc = test_acc / len(val_loader) history["loss"].append(avg_train_loss) history["accuracy"].append(avg_train_acc) history["loss"].append(avg_test_loss) history["accuracy"].append(avg_test_loss) if (epoch +1) % 1==0: print('Epoch{}, train_loss:{:.4},train_acc:{:.4},val_loss:{:.4},, val_acc:{:.4}' .format(epoch+1,avg_train_loss, avg_train_acc, avg_test_loss,avg_test_acc)) if ers(avg_test_loss): break

補足情報(FW/ツールのバージョンなど)

モデル作成が悪いのではないかと思うのですが、解決方法がわかりません。
教えていただけますと助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

batch sizeを64にして解決しました。

投稿2022/02/07 12:46

uram

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問