model.add(SeparableConv1D(filters=FILTERS * 2, kernel_size=KERNEL_SIZE, activation='relu', bias_initializer='random_uniform', depthwise_initializer='random_uniform', padding='same')) model.add(GlobalAveragePooling1D()) model.add(Dropout(rate=DROPOUT_RATE)) model.add(Dense(300)) model.add(Dense(300)) model.add(Dense(OUTPUT_UNITS, activation=OUTPUT_ACTIVATION)) print('compiling the model') optimizer = Adam(lr=LEARNING_RATE) model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['acc',precision,recall]) print('training the model') history = model.fit( train_vectors, train_target, epochs=EPOCHS, validation_data=(test_vectors, test_target), verbose=2, # Logs once per epoch. batch_size=BATCH_SIZE) results = [x[0] for x in model.predict_proba(test_vectors)] print('roc_auc',roc_auc_score(test_target,results))
# 1は1番目の要素のみ1で他は0の配列: [0,1] # に変換される。 # すなわち # [0, 1, 0, 1, 1, 1] => [[1,0], [0,1], [1,0], [0,1], [0,1], [0,1]] # に変換される。 Y = to_categorical(Y_list) # 学習のためのモデルを作る model = Sequential() # 全結合層(2層->10層) model.add(Dense(units=2, input_dim=2)) # 活性化関数(ReLu関数) model.add(Activation("relu")) # 全結合層(10層->2層) model.add(Dense(units=2)) # 活性化関数(softmax関数) model.add(Activation("softmax")) # モデルをコンパイル model.compile(loss="categorical_crossentropy", optimizer="sgd", metrics=["accuracy"]) # 学習を実行 model.fit(X, Y, epochs=3000, batch_size=32) # 学習したモデルで予測する。 # [1,1]=> 1([0,1]) 1番目のビットが立っている # [0,0]=> 0([1,0]) 0番目のビットが立っている # という予測になるはず... results = model.predict_proba(np.array([[1, 1], [0, 0]])) # 結果を表示 print("Predict:\n", results)