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

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

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

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

Python

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

Q&A

0回答

429閲覧

ChainerのValueErrorを解消したい

kanpan

総合スコア20

Chainer

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

Python

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

0グッド

0クリップ

投稿2018/11/28 07:49

編集2022/01/12 10:55

chainerを使って、簡単なCNNを実装したいのですが、ValueErrorがでてしまい、調べてみましたが、Errorの解消方法が分かりません。
どうすればよいのでしょうか?

#ソースコード

python

1import numpy as np 2#from keras.utils import np_utils 3import sys, os 4import six 5import argparse 6import chainer 7import chainer.links as L 8from chainer import optimizers, cuda, serializers 9import chainer.functions as F 10 11from CNNSC import CNNSC 12 13def get_parser(): 14 15 DEF_GPU = -1 16 DEF_DATA = "..{sep}Data{sep}input.dat".format(sep=os.sep) 17 DEF_EPOCH = 100 18 DEF_BATCHSIZE = 50 19 20 #引数の設定 21 parser = argparse.ArgumentParser() 22 parser.add_argument('--gpu', 23 dest='gpu', 24 type=int, 25 default=DEF_GPU, 26 metavar='CORE_NUMBER', 27 help='use CORE_NUMBER gpu (default: use cpu)') 28 parser.add_argument('--epoch', 29 dest='epoch', 30 type=int, 31 default=DEF_EPOCH, 32 help='number of epochs to learn') 33 parser.add_argument('--batchsize', 34 dest='batchsize', 35 type=int, 36 default=DEF_BATCHSIZE, 37 help='learning minibatch size') 38 parser.add_argument('--save-model', 39 dest='save_model', 40 action='store', 41 type=str, 42 default=None, 43 metavar='PATH', 44 help='save model to PATH') 45 parser.add_argument('--save-optimizer', 46 dest='save_optimizer', 47 action='store', 48 type=str, 49 default=None, 50 metavar='PATH', 51 help='save optimizer to PATH') 52 parser.add_argument('--baseline', 53 dest='baseline', 54 action='store_true', 55 help='if true, run baseline model') 56 57 return parser 58 59def save_model(model, file_path='sc_cnn.model'): 60 # modelを保存 61 print ('save the model') 62 model.to_cpu() 63 serializers.save_npz(file_path, model) 64 65def save_optimizer(optimizer, file_path='sc_cnn.state'): 66 # optimizerを保存 67 print ('save the optimizer') 68 serializers.save_npz(file_path, optimizer) 69 70def train(args): 71 72 batchsize = args.batchsize # minibatch size 73 n_epoch = args.epoch # エポック数 74 75 height = 100 76 width = 200 77 78 #訓練データの読み込み 79 x_train = np.load('posneg_train_data.npy') 80 y_train = np.load('posneg_train_label.npy') 81 82 #one_hot_y_train = np_utils.to_categorical(y_train) 83 84 #テストデータの読み込み 85 x_test = np.load('posneg_test_data.npy') 86 y_test = np.load('posneg_test_label.npy') 87 88 #one_hot_y_test = np_utils.to_categorical(y_test) 89 90 N_test = y_test.size # test data size 91 N = len(x_train) # train data size 92 in_units = x_train.shape[1] # 入力層のユニット数 (語彙数) 93 94 # (nsample, channel, height, width) の4次元テンソルに変換 95 input_channel = 1 96 x_train = x_train.reshape(len(x_train), input_channel, height, width) 97 x_test = x_test.reshape(len(x_test), input_channel, height, width) 98 99 n_label = 2 # ラベル数 100 filter_height = [3,4,5] # フィルタの高さ 101 baseline_filter_height = [3] 102 filter_width = width # フィルタの幅 (embeddingの次元数) 103 output_channel = 100 104 decay = 0.0001 # 重み減衰 105 grad_clip = 3 # gradient norm threshold to clip 106 max_sentence_len = height # max length of sentences 107 108 # モデルの定義 109 if args.baseline == False: 110 # 提案モデル 111 model = CNNSC(input_channel, 112 output_channel, 113 filter_height, 114 filter_width, 115 n_label, 116 max_sentence_len) 117 else: 118 # ベースラインモデル (フィルタの種類が1つ) 119 model = CNNSC(input_channel, 120 output_channel, 121 baseline_filter_height, 122 filter_width, 123 n_label, 124 max_sentence_len) 125 126 # Setup optimizer 127 optimizer = optimizers.AdaDelta() 128 optimizer.setup(model) 129 optimizer.add_hook(chainer.optimizer.GradientClipping(grad_clip)) 130 optimizer.add_hook(chainer.optimizer.WeightDecay(decay)) 131 132 #GPUを使うかどうか 133 if args.gpu >= 0: 134 cuda.check_cuda_available() 135 cuda.get_device(args.gpu).use() 136 model.to_gpu() 137 xp = np if args.gpu < 0 else cuda.cupy #args.gpu <= 0: use cpu, otherwise: use gpu 138 139 # Learning loop 140 for epoch in six.moves.range(1, n_epoch + 1): 141 142 print ('epoch', epoch, '/', n_epoch) 143 144 # training 145 perm = np.random.permutation(N) #ランダムな整数列リストを取得 146 sum_train_loss = 0.0 147 sum_train_accuracy = 0.0 148 for i in six.moves.range(0, N, batchsize): 149 150 #perm を使い x_train, y_trainからデータセットを選択 (毎回対象となるデータは異なる) 151 x = chainer.Variable(xp.asarray(x_train[perm[i:i + batchsize]]).astype(np.float32)) #source 152 t = chainer.Variable(xp.asarray(y_train[perm[i:i + batchsize]]).astype(np.float32)) #target 153 154 model.zerograds() 155 156 y = model(x) 157 loss = F.softmax_cross_entropy(y, t) # 損失の計算 158 accuracy = F.accuracy(y, t) # 正解率の計算 159 160 sum_train_loss += loss.data * len(t) 161 sum_train_accuracy += accuracy.data * len(t) 162 163 # 最適化を実行 164 loss.backward() 165 optimizer.update() 166 167 print('train mean loss={}, accuracy={}'.format(sum_train_loss / N, sum_train_accuracy / N)) #平均誤差 168 169 # evaluation 170 sum_test_loss = 0.0 171 sum_test_accuracy = 0.0 172 for i in six.moves.range(0, N_test, batchsize): 173 174 # all test data 175 x = chainer.Variable(xp.asarray(x_test[i:i + batchsize]).astype(np.float32)) 176 t = chainer.Variable(xp.asarray(y_test[i:i + batchsize]).astype(np.float32)) 177 178 y = model(x, False) 179 loss = F.softmax_cross_entropy(y, t) # 損失の計算 180 accuracy = F.accuracy(y, t) # 正解率の計算 181 182 sum_test_loss += loss.data * len(t) 183 sum_test_accuracy += accuracy.data * len(t) 184 185 print(' test mean loss={}, accuracy={}'.format(sum_test_loss / N_test, sum_test_accuracy / N_test)) #平均誤差 186 187 sys.stdout.flush() 188 189 return model, optimizer 190 191def main(): 192 parser = get_parser() 193 args = parser.parse_args() 194 model, optimizer = train(args) 195 196 if args.save_model != None: 197 save_model(model) 198 if args.save_optimizer != None: 199 save_optimizer(optimizer) 200 201if __name__ == "__main__": 202 main()

#エラーメッセージ

(base) C:\jikken>python confirm.py --save-model C:/jikken --save-optimizer C:/jikken epoch 1 / 100 Traceback (most recent call last): File "confirm.py", line 202, in <module> main() File "confirm.py", line 194, in main model, optimizer = train(args) File "confirm.py", line 156, in train y = model(x) File "C:\jikken\CNNSC.py", line 56, in __call__ h_l1 = F.dropout(F.tanh(self[self.cnv_num+0](concat)), ratio=0.5, train=train) File "C:\Anaconda\lib\site-packages\chainer\functions\noise\dropout.py", line 163, in dropout kwargs, train='train argument is not supported anymore. ' File "C:\Anaconda\lib\site-packages\chainer\utils\argument.py", line 7, in check_unexpected_kwargs raise ValueError(message) ValueError: train argument is not supported anymore. Use chainer.using_config

#備考
参考にしたページはこちらです。
https://qiita.com/ichiroex/items/7ff1cff3840520cf2410

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問