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

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

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

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

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

Q&A

0回答

409閲覧

chainerでなぜエラーになるのかわからない

sabamis0

総合スコア13

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

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

0グッド

0クリップ

投稿2018/11/10 08:39

#エラーコード

errer

1Exception in main training loop: 2Invalid operation is performed in: Convolution2DFunction (Forward) 3 4Expect: in_types[0].shape[1] == in_types[1].shape[1] * 1 5Actual: 64 != 1 6Traceback (most recent call last): 7 File "/usr/local/lib/python3.6/dist-packages/chainer/training/trainer.py", line 315, in run 8 update() 9 File "/usr/local/lib/python3.6/dist-packages/chainer/training/updaters/standard_updater.py", line 165, in update 10 self.update_core() 11 File "/usr/local/lib/python3.6/dist-packages/chainer/training/updaters/standard_updater.py", line 177, in update_core 12 optimizer.update(loss_func, *in_arrays) 13 File "/usr/local/lib/python3.6/dist-packages/chainer/optimizer.py", line 680, in update 14 loss = lossfun(*args, **kwds) 15 File "/usr/local/lib/python3.6/dist-packages/chainer/link.py", line 242, in __call__ 16 out = forward(*args, **kwargs) 17 File "/usr/local/lib/python3.6/dist-packages/chainer/links/model/classifier.py", line 143, in forward 18 self.y = self.predictor(*args, **kwargs) 19 File "<ipython-input-7-ce3592e45691>", line 108, in __call__ 20 F.relu(self.conv2(h))), 2, stride=2) 21 File "/usr/local/lib/python3.6/dist-packages/chainer/link.py", line 242, in __call__ 22 out = forward(*args, **kwargs) 23 File "/usr/local/lib/python3.6/dist-packages/chainer/links/connection/convolution_2d.py", line 173, in forward 24 groups=self.groups) 25 File "/usr/local/lib/python3.6/dist-packages/chainer/functions/connection/convolution_2d.py", line 572, in convolution_2d 26 y, = fnode.apply(args) 27 File "/usr/local/lib/python3.6/dist-packages/chainer/function_node.py", line 245, in apply 28 self._check_data_type_forward(in_data) 29 File "/usr/local/lib/python3.6/dist-packages/chainer/function_node.py", line 330, in _check_data_type_forward 30 self.check_type_forward(in_type) 31 File "/usr/local/lib/python3.6/dist-packages/chainer/functions/connection/convolution_2d.py", line 66, in check_type_forward 32 x_type.shape[1] == w_type.shape[1] * self.groups, 33 File "/usr/local/lib/python3.6/dist-packages/chainer/utils/type_check.py", line 546, in expect 34 expr.expect() 35 File "/usr/local/lib/python3.6/dist-packages/chainer/utils/type_check.py", line 483, in expect 36 '{0} {1} {2}'.format(left, self.inv, right)) 37Will finalize trainer extensions and updater before reraising the exception. 38--------------------------------------------------------------------------- 39InvalidType Traceback (most recent call last)

#プログラム

python

1# -*- coding: utf-8 -*- 2import numpy as np 3from sklearn.model_selection import train_test_split 4from sklearn.datasets import fetch_mldata 5import chainer 6import chainer.links as L 7import chainer.functions as F 8from chainer import optimizers, Chain, Variable, initializers 9from chainer.training import extensions 10from chainer.datasets import tuple_dataset 11from chainer.datasets import mnist 12 13# モデル設定 14batch_size = 100 # バッチサイズ 15n_epoch = 20 # エポック数 16n_channel = 1 # channel数(画像の奥行的な。カラー画像ならRGBなので3、モノクロなら1) 17n_label = 10 # 正解ラベルの種類数 18 19class MLP(Chain): 20 # 多層パーセプトロンによる分類 21 def __init__(self): 22 super(MLP, self).__init__() 23 with self.init_scope(): 24 self.fc1 = L.Linear(None, 100) 25 self.fc2 = L.Linear(100, n_label) 26 self.bn1 = L.BatchNormalization(100) 27 28 def __call__(self, x): 29 h = F.sigmoid(self.fc1(x)) 30 h = self.bn1(h) 31 return self.fc2(h) 32 33class LeNet(Chain): 34 # CNNを用いた分類 35 def __init__(self): 36 super(LeNet, self).__init__() 37 with self.init_scope(): 38 self.conv1 = L.Convolution2D(n_channel,6,5,1) 39 self.conv2 = L.Convolution2D(6,16,5,1) 40 self.conv3 = L.Convolution2D(16,120,4,1) 41 self.fc4 = L.Linear(None, 84) 42 self.fc5 = L.Linear(84,n_label) 43 44 def __call__(self, x): 45 h = F.sigmoid(self.conv1(x)) 46 h = F.max_pooling_2d(h, 2, 2) 47 h = F.sigmoid(self.conv2(h)) 48 h = F.max_pooling_2d(h,2,2) 49 h = F.sigmoid(self.conv3(h)) 50 h = F.sigmoid(self.fc4(h)) 51 return self.fc5(h) 52 53class Alex(Chain): 54 # AlexNet 55 def __init__(self): 56 super(Alex, self).__init__( 57 conv1 = L.Convolution2D(n_channel, 96, 11, stride=4), 58 conv2 = L.Convolution2D(96, 256, 5, pad=2), 59 conv3 = L.Convolution2D(256, 384, 3, pad=1), 60 conv4 = L.Convolution2D(384, 384, 3, pad=1), 61 conv5 = L.Convolution2D(384, 256, 3, pad=1), 62 fc6 = L.Linear(None, 4096), 63 fc7 = L.Linear(4096, 4096), 64 fc8 = L.Linear(4096, n_label), 65 ) 66 67 def __call__(self, x): 68 h = F.max_pooling_2d(F.local_response_normalization( 69 F.relu(self.conv1(x))), 3, stride=2) 70 h = F.max_pooling_2d(F.local_response_normalization( 71 F.relu(self.conv2(h))), 3, stride=2) 72 h = F.relu(self.conv3(h)) 73 h = F.relu(self.conv4(h)) 74 h = F.max_pooling_2d(F.relu(self.conv5(h)), 2, stride=2) 75 h = F.dropout(F.relu(self.fc6(h))) 76 h = F.dropout(F.relu(self.fc7(h))) 77 return self.fc8(h) 78 79 ## 80class VGG16(Chain): 81 def __init__(self): 82 super(VGG16, self).__init__( 83 conv1 = L.Convolution2D(n_channel, 64, 3, stride=1, pad=1), 84 conv2 = L.Convolution2D(64, 64, 3, stride=1, pad=1), 85 86 conv3 = L.Convolution2D(64, 128, 3, stride=1, pad=1), 87 conv4 = L.Convolution2D(128, 128, 3, stride=1, pad=1), 88 89 conv5 = L.Convolution2D(128, 256, 3, stride=1, pad=1), 90 conv6 = L.Convolution2D(256, 256, 3, stride=1, pad=1), 91 conv7 = L.Convolution2D(256, 256, 3, stride=1, pad=1), 92 93 conv8 =L.Convolution2D(256, 512, 3, stride=1, pad=1), 94 conv9 =L.Convolution2D(512, 512, 3, stride=1, pad=1), 95 conv10 =L.Convolution2D(512, 512, 3, stride=1, pad=1), 96 97 conv11 =L.Convolution2D(512, 512, 3, stride=1, pad=1), 98 conv12 =L.Convolution2D(512, 512, 3, stride=1, pad=1), 99 conv13 =L.Convolution2D(512, 512, 3, stride=1, pad=1), 100 101 fc14 =L.Linear(None, 4096), 102 fc15 =L.Linear(4096, 4096), 103 fc16 =L.Linear(4096, num_class), 104 ) 105 106 def __call__(self, x): 107 h = F.relu(self.conv1(x)) 108 h = F.max_pooling_2d(F.local_response_normalization( 109 F.relu(self.conv2(h))), 2, stride=2) 110 111 h = F.relu(self.conv3(h)) 112 h = F.max_pooling_2d(F.local_response_normalization( 113 F.relu(self.conv4(h))), 2, stride=2) 114 115 h = F.relu(self.conv5(h)) 116 h = F.relu(self.conv6(h)) 117 h = F.max_pooling_2d(F.local_response_normalization( 118 F.relu(self.conv7(h))), 2, stride=2) 119 120 h = F.relu(self.conv8(h)) 121 h = F.relu(self.conv9(h)) 122 h = F.max_pooling_2d(F.local_response_normalization( 123 F.relu(self.conv10(h))), 2, stride=2) 124 125 h = F.relu(self.conv11(h)) 126 h = F.relu(self.conv12(h)) 127 h = F.max_pooling_2d(F.local_response_normalization( 128 F.relu(self.conv13(h))), 2, stride=2) 129 130 h = F.dropout(F.relu(self.fc14(h))) 131 h = F.dropout(F.relu(self.fc15(h))) 132 h = self.fc16(h) 133 134 return h 135 136 137class DeepLearningClassifier: 138 def __init__(self): 139 model = VGG() 140 self.model = L.Classifier(model) 141 self.opt = optimizers.Adam() 142 self.opt.setup(self.model) 143 144 def fit(self,X_train, y_train): 145 train_data = tuple_dataset.TupleDataset(X_train, y_train) 146 train_iter = chainer.iterators.SerialIterator(train_data, batch_size) 147 updater = chainer.training.StandardUpdater(train_iter, self.opt) 148 self.trainer = chainer.training.Trainer(updater, (n_epoch, 'epoch'), out='result') 149 self.trainer.extend(extensions.LogReport()) 150 self.trainer.extend(extensions.PrintReport(['epoch', 'main/accuracy'])) 151 self.trainer.extend(extensions.ProgressBar()) 152 self.trainer.run() 153 154 def fit_and_score(self, X_train, y_train, X_test, y_test): 155 train_data = tuple_dataset.TupleDataset(X_train, y_train) 156 test_data = tuple_dataset.TupleDataset(X_test, y_test) 157 train_iter = chainer.iterators.SerialIterator(train_data, batch_size) 158 test_iter = chainer.iterators.SerialIterator(test_data, batch_size, repeat=False, shuffle=False) 159 updater=chainer.training.StandardUpdater(train_iter, self.opt) 160 self.trainer = chainer.training.Trainer(updater, (n_epoch, 'epoch'), out='result') 161 self.trainer.extend(extensions.Evaluator(test_iter, self.model)) 162 self.trainer.extend(extensions.LogReport()) 163 #self.trainer.extend(extensions.PrintReport(['epoch', 'main/accuracy', 'validation/main/accuracy'])) 164 self.trainer.extend(extensions.ProgressBar()) 165 166 self.trainer.run() 167 168 def predict(self, X_test): 169 x=Variable(X_test) 170 y=self.model.predictor(x) 171 answer=y.data 172 answer=np.argmax(answer, axis=1) 173 return answer 174 175 def score(self, X_test, y_test): 176 y=self.predict(X_test) 177 N=y_test.size 178 return 1.0-np.count_nonzero(y-y_test)/N 179 180 def predict_proba(self, X_test): 181 x=Variable(X_test) 182 y=self.model.predictor(x) 183 y=np.exp(y.data) 184 H=y.sum(1).reshape(-1,1) 185 return np.exp(y)/H 186 187if __name__=='__main__': 188 # mnist 使用例 189 # 前処理 190 mnist = fetch_mldata('MNIST original', data_home="./") 191 X = mnist.data 192 y = mnist.target 193 X =X/X.max() 194 X = X.astype(np.float32) 195 y = y.astype(np.int32) 196 X =X .reshape(70000,1,28,28) # 必ず(データの総数, channel数, 縦, 横)の形にしておく 197 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) 198 199 # 定義 200 clf = DeepLearningClassifier() 201 # トレーニング 202 clf.fit(X_train, y_train) 203 # 予測 204 prediction = clf.predict(X_test) 205 # 精度測定 206 acc = clf.score(X_test, y_test) 207

#困っている事
class VGG16を追加したらプログラムが動かなくなってしまった.

#環境
Google Colaboratory
chainer

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問