テキストデータをMecabで名詞に変更します。
そのあと、BOWで数値化しています。それをtrain_dataにして、教師データをtrain_label1にしました。
例)各500データ
train_data1→
0 0 0 0 6 8 0 7 9 6 0 7 ・・・0 0 0 7 8
0 0 0 0 6 9 0 0 7 9 8 7 ・・・0 0 0 1 1
train_rabel1→
25
8.5
上記を下記のソースコードで学習させると、下記のようにLossがマイナス値になります。
32/141 [=====>........................] - ETA: 0s - loss: -63.7767 - accuracy: 0.2188
96/141 [===================>..........] - ETA: 0s - loss: -59.5121 - accuracy: 0.1875
141/141 [==============================] - 0s 1ms/step - loss: -50.1103 - accuracy: 0.1986 - val_loss: -20.9677 - val_accuracy: 0.5000
入力データがおかしいのか、Sequentialモデルがおかしいのか・・・
いろいろ変更しましたが、うまくいきません・・・
初心者で申し訳ありませんが、アドバイスいただけないでしょうか?
python
1# Sequentialモデル使用 2model = Sequential() 3 4model.add(Dense(1900, activation='relu', input_shape = ( 950, ))) 5model.add(Dropout(0.5)) 6 7model.add(Dense(500, activation='relu')) 8model.add(Dropout(0.5)) 9 10model.add(Dense(1, activation='softmax')) 11 12 13# モデルをコンパイル 14model.compile(loss="binary_crossentropy", optimizer="sgd", metrics=["accuracy"]) 15 16model.summary() 17 18#訓練 19model.fit(train_data1,train_label1, epochs=300, validation_split=0.1)
修正後のソースコード
python
1# Sequentialモデル使用(Sequentialモデルはレイヤを順に重ねたモデル) 2model = Sequential() 3 4model.add(Dense(1900, activation='relu', input_shape = ( 950, ))) 5model.add(Dropout(0.5)) 6 7model.add(Dense(500, activation='relu')) 8model.add(Dropout(0.5)) 9 10model.add(Dense(1, activation='linear')) 11 12# モデルをコンパイル 13model.compile(loss="mean_squared_error", optimizer="sgd", metrics=["accuracy"]) 14 15model.summary() 16 17#訓練 18model.fit(train_data1,train_label1, epochs=300, validation_split=0.1) 19model.save('model.h5') 20 21score = model.evaluate(test_data1, test_result1) 22print("正解率: %.2f%%" % (score[1] * 100)) 23
予測用のコード
python
1from keras.models import load_model 2import numpy as np 3import csv 4 5test_data=[] 6with open('test.csv') as f: 7 reader = csv.reader(f) 8 for row in reader: 9 test_data.append(row) 10 11test_data1 = np.array(test_data,dtype=np.float64) 12 13 14model = load_model("model.h5") 15 16result = model.predict_classes(test_data1) 17print(result)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/18 09:38
2020/03/18 10:04
2020/03/19 00:32
2020/03/19 05:19
2020/03/19 12:26