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

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

新規登録して質問してみよう
ただいま回答率
87.20%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

解決済

Python ValueError: invalid literal for int() with base 10: '' のエラーの改善

odenhanpen
odenhanpen

総合スコア5

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

2回答

0評価

0クリップ

501閲覧

投稿2021/12/15 09:40

前提・実現したいこと

PythonでCNNモデルを用い音声感情分類をするシステムを作っています。
ディレクトリ内のfeatureフォルダにそれぞれSession1~5までのフォルダがあり、
その中のtestフォルダ、trainフォルダにそれぞれtestデータとtrainデータの特徴量ファイルが入っています。

Google Colabratoryで実行しようとしたところ、以下のエラーメッセージが発生しました。
エラーの意味を調べてみたのですが原因と改善方法がどうしても分からなかったため、どなたかご教授いただきたいです。
よろしくお願いいたします。

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

---> tf.random.set_seed(int(seed)) ValueError: invalid literal for int() with base 10: ''

該当のソースコード

Python

# ライブラリ、パッケージのimport emo_classes = 4 slen = 2913 f_dim = 40 args = sys.argv argc = len(args) if(argc!=3): print('Error: python cnn_model.py test_fold initial_value\n') quit() fold = sys.argv[1] seed = sys.argv[2] tf.random.set_seed(int(seed)) np.random.seed(int(seed)) random.seed(int(seed)) os.environ['TF_DETERMINISTIC_OPS'] = '1' os.environ['PYTHONHASHSEED'] = str(seed) f_test_path = os.getcwd() + '/feature/Session' + fold + '/test/' f_train_path = os.getcwd() + '/feature/Session' + fold + '/train/' l_test_path = os.getcwd() + '/label/impro/Session' + fold + '.csv' if fold == '1': l_train_path = os.getcwd() + '/label/impro/Session[2345].csv' if fold == '2': l_train_path = os.getcwd() + '/label/impro/Session[1345].csv' if fold == '3': l_train_path = os.getcwd() + '/label/impro/Session[1245].csv' if fold == '4': l_train_path = os.getcwd() + '/label/impro/Session[1235].csv' if fold == '5': l_train_path = os.getcwd() + '/label/impro/Session[1234].csv' def hard_label(path): label=[] f_list = list(ii for ii in sorted(glob.glob(path))) for file_path in f_list: with open(file_path, 'r') as file: for line in file: line_sp = line.replace('Happiness', '0') line_sp = line_sp.replace('Anger', '1') line_sp = line_sp.replace('Neutral', '2') line_sp = line_sp.replace('Sadness', '3') line_sp = line_sp.replace('\n', '') line_sp = line_sp.split(',') if (len(line_sp)==10): if (line_sp[9] == '0') or (line_sp[9] == '1') or (line_sp[9] == '2') or (line_sp[9] == '3'): label.append(line_sp[9]) print(line_sp[0]) file.close() label = np.array(label) label = label.astype('int16') #print(label) return label def load_data(path): f_list = list(sorted(glob.glob(path + '*.npy'))) X = np.zeros((len(f_list), slen, f_dim), dtype='float32') for fname, ii in zip(f_list, range(len(f_list))): tmp = np.load(fname) padd = np.zeros((slen-len(tmp), f_dim)) X[ii] = np.vstack((tmp, padd)) return X.reshape(len(X), slen, f_dim, 1) def create_model(height, width, depth):         # モデルの定義 return model def categorical_focal_loss(num_classes, alpha, gamma, smooth_alpha): def categorical_focal_loss_fixed(y_true, y_pred): # categorical_focal_lossの計算 return categorical_focal_loss_fixed def categorical_crossentropy(): def categorical_crossentropy_fixed(y_true, y_pred): # scale predictions so that the class probas of each sample sum to 1 y_pred /= K.sum(y_pred, axis=-1, keepdims=True) # clip to prevent NaN's and Inf's y_pred = K.clip(y_pred, K.epsilon(), 1.-K.epsilon()) loss = y_true * K.log(y_pred) loss = -K.sum(loss, -1) return loss return categorical_crossentropy_fixed class Metrics(Callback): def __init__(self, validation, file_path): super(Metrics, self).__init__() self.file_path = file_path self.validation = validation def on_train_begin(self, epoch, logs={}): self.best_val_recall = 0 self.val_recalls = [] def on_epoch_end(self, epoch, logs={}): val_predict = np.argmax(self.model.predict(self.validation[0]), -1) val_targ = self.validation[1] if len(val_targ.shape) == 2 and val_targ.shape[1] != 1: val_targ = np.argmax(val_targ, -1) val_recall = recall_score(val_targ, val_predict, average='macro') _val_recall = recall_score(val_targ, val_predict, average=None) self.val_recalls.append(val_recall) if epoch == 0: print('epoch \t loss \t\t WA \t\t val_loss \t val_WA \t val_UA') epoch += 1 print(epoch, '\t', '{:.5f}'.format(logs['loss']), '\t', '{:.5f}'.format(logs['accuracy']), '\t', '{:.5f}'.format(logs['val_loss']), '\t', '{:.5f}'.format(logs['val_accuracy']), '\t', f'{val_recall:.5f}', '\t', _val_recall ) return def main(): x_train = load_data(f_train_path) y_train = hard_label(l_train_path) Happiness=np.count_nonzero(y_train==0) Anger=np.count_nonzero(y_train==1) Neutral=np.count_nonzero(y_train==2) Sadness=np.count_nonzero(y_train==3) n_max=max(Happiness, Anger, Neutral, Sadness) y_train = to_categorical(y_train, emo_classes) x_test = load_data(f_test_path) y_test = hard_label(l_test_path) y_test = to_categorical(y_test, emo_classes) print(x_train.shape, y_train.shape) print(x_test.shape, y_test.shape) batch_size = 16 epochs = 100 w_dir = os.getcwd()+'/Result/Session'+fold+'/' os.makedirs(w_dir, exist_ok=True) w_file = w_dir + f'seed{int(seed):03d}.hdf5' model = create_model(slen, f_dim, 1) # Stop training when a monitored metric has stopped improving early_stopping = EarlyStopping(monitor='val_loss', min_delta=0.001, patience=1, verbose=0, mode='auto' ) # Save model weights by the lowest validation loss chkPoint = ModelCheckpoint(w_file, monitor='val_loss', mode='min', verbose=0, save_best_only=True, save_weights_only=True, ) valid_metrics = Metrics(validation=(x_test, y_test), file_path=w_file) opt = Adam(lr=1e-4, amsgrad=True) # Configures the model for training model.compile(loss=categorical_crossentropy(), optimizer=opt, metrics=['accuracy']) class_weight = {0: n_max/Happiness, 1: n_max/Anger, 2: n_max/Neutral, 3: n_max/Sadness} # Trains the model for a fixed number of epochs (iterations on a dataset) model_history = model.fit(x=x_train, y=y_train, batch_size=batch_size, epochs=epochs, #class_weight=class_weight, verbose=0, validation_data=(x_test, y_test), callbacks=[valid_metrics, chkPoint] ) # Display loss and accuracy of learning process plot_history(model_history, save_graph_img_path=w_dir, fig_size_width=12, fig_size_height=10, lim_font_size=25 ) # Evaluate performance by best model eval_model = create_model(slen, f_dim, 1) eval_model.load_weights(w_file) predict_prob = eval_model.predict(x_test) predict_classes = np.argmax(predict_prob, axis=1) predict_classes = predict_classes.reshape(len(predict_classes), 1) true_classes = np.argmax(y_test,axis=1) true_classes = true_classes.reshape(len(true_classes), 1) result = np.hstack((true_classes, predict_classes)) result = np.hstack((result, predict_prob)) C = confusion_matrix(true_classes, predict_classes) line = np.sum(C, axis=1) WA, UA = 0, 0 for ii in range(emo_classes): WA += C[ii,ii] UA += C[ii,ii]/line[ii] WA = (WA / np.sum(C)) * 100.0 UA = UA*100/emo_classes C = C / np.sum(C, axis=1).reshape(emo_classes, 1) np.set_printoptions(precision=3) print('Weigted Accuracy:', '{:.3f}'.format(WA)) print('Unweigted Accuracy:', '{:.3f}'.format(UA)) print('Confusion matrix \n', C*100) # save true label, predicted label, and predicted probability np.save(w_dir + f'result_{int(seed):03d}.npy', result) if __name__ == '__main__': main() print ('><')

補足情報

Session4フォルダのtestデータが元々存在しないことが原因なのかと考えましたが、どのように改善すれば良いか分かりませんでした…(他のSession1,2,3,5フォルダ内のデータは、testデータもtrainデータも複数ファイル存在します)
(分かりにくい説明で申し訳ございません。)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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