Saya menggunakan pandas untuk mengekstrak data saya. Untuk mendapatkan gambaran tentang data saya, saya mereplikasi contoh dataset...

data = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

Yang menghasilkan kumpulan data shape=(100,4)...

    A   B   C   D
0  75  38  81  58
1  36  92  80  79
2  22  40  19  3
   ...    ...

Saya menggunakan tflearn jadi saya juga membutuhkan label target. Jadi saya membuat label target dengan mengekstrak salah satu kolom dari data dan kemudian mengeluarkannya dari variabel data (Saya juga mengonversi semuanya ke array numpy)...

# Target label used for training
labels = np.array(data['A'].values, dtype=np.float32)

# Reshape target label from (100,) to (100, 1)
labels = np.reshape(labels, (-1, 1))

# Data for training minus the target label.
data = np.array(data.drop('A', axis=1).values, dtype=np.float32)

Lalu saya mengambil data dan labels dan memasukkannya ke DNN...

# Deep Neural Network.    
net = tflearn.input_data(shape=[None, 3])
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 1, activation='softmax')
net = tflearn.regression(net)

# Define model.
model = tflearn.DNN(net)
model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True)

Sepertinya ini harus berhasil, tetapi output yang saya dapatkan adalah sebagai berikut ...

enter image description here

Perhatikan bahwa loss tetap di 0, jadi saya pasti melakukan sesuatu yang salah. Saya tidak benar-benar tahu dalam bentuk apa data saya seharusnya. Bagaimana saya bisa membuat pelatihan saya berfungsi?

1
buydadip 11 November 2017, 23:30

1 menjawab

Jawaban Terbaik

Output aktual Anda berada dalam kisaran 0 hingga 100 sedangkan softmax aktivasi di lapisan terluar menghasilkan dalam kisaran [0, 1]. Anda perlu memperbaikinya. Juga kerugian default untuk tflearn.regression adalah entropi silang kategoris yang digunakan untuk masalah klasifikasi dan tidak masuk akal dalam skenario Anda. Anda harus mencoba kerugian L2. Alasan Anda mendapatkan kesalahan nol dalam pengaturan ini adalah karena jaringan Anda memprediksi 0 untuk semua contoh pelatihan dan jika Anda memasukkan nilai itu dalam rumus untuk entropi silang sigmoid, kerugian memang nol. Berikut adalah rumusnya , di mana t[i] menunjukkan probabilitas aktual (yang tidak masuk akal dalam masalah Anda) dan o[i] adalah probabilitas yang diprediksi.

equation

Berikut alasan selengkapnya tentang mengapa pilihan default fungsi loss tidak cocok untuk Anda kasus

2
rajat 14 November 2017, 10:23