Eğitim sonucu Test accuracy: 1.0 ve loss:00 çıkıyor. Hata ne olabilir ?


#1

Merhaba, Sağlık sistemleri üzerine kategorik verilerden oluşan bir datasetim var.( Dataset, uydurulma) Tahminleme modelim yapay sinir ağları, Tensorflow kullanıyorum.

datasetim üzerinde yaptığım öninşleme sonucunda hdgcgvdf dataframe’i oluşturdum. Sarı kısımlar departmanların OneHotEncoder dönüşümü, yeşil kısımlr ise günlerin OneHotEncoder dönüşümü. Geri kalanlar LabelEncoder. 70x15 veri var.

procedure dataset’i

from sklearn.cross_validation import train_test_split
x_train,x_test,y_train,y_test=train_test_split(hdcgvdf,procedure,test_size=0.33, random_state=0)
from sklearn.preprocessing import StandardScaler
sc=StandardScaler()
X_train=sc.fit_transform(x_train)
X_test=sc.fit_transform(x_test)

Y_train=sc.fit_transform(y_train)
Y_test=sc.fit_transform(y_test)
# <!-- END DATA PREPROCESSONG -->

#10. (7.ADIM)
#10.1. Girdi ve çıktı değerlerini tanımlıyoruz. (Placeholder: yer tutucu)
x=tf.placeholder(tf.float32,[None,15])  #kaç tane girdi değeri varsa.
y=tf.placeholder(tf.float32,[None, 1]) #6' değeri procedure göre belirlenir

#10.2. Katmanları ve nöron sayısını belirliyoruz.
layer_1=128
layer_2=64
layer_3=32
layer_out=1
    paragraf girintisi 4 boşluktan oluşan, önceden biçimlendirilen yazı
#10.3. Eğitilecek verileri tanımlıyoruz.
weight_1 = tf.Variable(tf.truncated_normal([15, layer_1], stddev=0.1))
bias_1 = tf.Variable(tf.constant(0.1, shape=[layer_1]))
weight_2 = tf.Variable(tf.truncated_normal([layer_1, layer_2], stddev=0.1))
bias_2 = tf.Variable(tf.constant(0.1, shape=[layer_2]))
weight_3 = tf.Variable(tf.truncated_normal([layer_2, layer_3], stddev=0.1))
bias_3 = tf.Variable(tf.constant(0.1, shape=[layer_3]))
#output
weight_4 = tf.Variable(tf.truncated_normal([layer_3, layer_out], stddev=0.1))
bias_4 = tf.Variable(tf.constant(0.1, shape=[layer_out]))

#10.4..Toplama kısmı
y1=tf.nn.relu(tf.matmul(x,weight_1)+bias_1)
y2=tf.nn.relu(tf.matmul(y1,weight_2)+bias_2)
y3=tf.nn.relu(tf.matmul(y2,weight_3)+bias_3)
logits=tf.matmul(y3,weight_4)+bias_4

#10.5. Aktivasyon fonksiyonu
y4=tf.nn.softmax(logits)

#10.6. loss fonksiyonu
xent = tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y)
loss = tf.reduce_mean(xent)

#10.7. Optimizasyon
correct_prediction = tf.equal(tf.argmax(y4, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # Başarı oranı

optimize = tf.train.AdamOptimizer(0.001). minimize(loss)

#10.8. tensorflow çalıştırmak için
sess = tf.Session()
sess.run(tf.global_variables_initializer()) #parametreleri tanımladık, şimdide kabul ediyoruz.

#10.9. parça parça verileri eğitiyoruz.
loss_graph = []
#10.10 eğitim fonksiyonu
def training_step (iterations):

    for i in range (iterations):
        feed_dict_train = {x: X_train, y:Y_train}
        [_, train_loss] = sess.run([optimize, loss], feed_dict=feed_dict_train)
        loss_graph.append(train_loss)

        if i % 100 == 0:
            train_acc = sess.run(accuracy, feed_dict=feed_dict_train)
            print('Iteration:', i, 'Training accuracy:', train_acc, 'Training loss:', train_loss)
            

#10.11 Test fonksiyonu
feed_dict_test = {x: X_test ,y: Y_test}
def test_accuracy ():
    acc = sess.run(accuracy, feed_dict=feed_dict_test)
    print('Testing accuracy:', acc)
    
#10.12 Eğitim sayısı    
training_step(10000)

#10.13 Başarı oranı
test_accuracy()

#2

Ağın çıkışı nedir ?
kategorik demişsin kaç sınıf var ?
ve kontrol et bakalım her sınıfdan kaç örnek datan var ?
Toplamda Veri setinin büyüklüğü nedir ?
Eğitim Loss ve acc değerleri neler ?
Eğitim datasıyla Test datasının aynı olması mümkünmü ?


#4

Düzenlemişsinizde benim sorduğum soruların hala cevabı yok

Şöyle Cevaplayım :
Eğer Test Acc 1.0 ve loss 0 ise

  • ya çok iyi eğitmişsinizdir ? :slight_smile:

  • yada verisetinizde problem vardır


#3

Birol Bey, soruyu ayrıntılı olarak düzenledim.