Python TensorFlow iki aynı kod farklı çıktı veriyor

479980

Decapat
Katılım
29 Temmuz 2021
Mesajlar
742
Çözümler
1
Arkadaşlar kafayı sıyıracağım kodların ikisi de aynı, sadece hocamda hata vermeyen ama bende veren bir kısmı düzelttim. Kodlar aşağıda.
Hocamın kodu:
Python:
import numpy as np
import pandas as pd

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, GRU, Embedding
import tensorflow as tf

dataset = pd.read_csv('hepsiburada.csv')

dataset

target = dataset['Rating'].values.tolist()
data = dataset['Review'].values.tolist()

cutoff = int(len(data) * 0.80)
x_train, x_test = data[:cutoff], data[cutoff:]
y_train, y_test = target[:cutoff], target[cutoff:]

x_train[500]

x_train[800]

y_train[800]

num_words = 10000
tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=num_words)

tokenizer.fit_on_texts(data)

tokenizer.word_index

x_train_tokens = tokenizer.texts_to_sequences(x_train)

x_train[800]

print(x_train_tokens[800])

x_test_tokens = tokenizer.texts_to_sequences(x_test)

num_tokens = [len(tokens) for tokens in x_train_tokens + x_test_tokens]
num_tokens = np.array(num_tokens)

np.mean(num_tokens)

np.max(num_tokens)

np.argmax(num_tokens)

x_train[21941]

max_tokens = np.mean(num_tokens) + 2 * np.std(num_tokens)
max_tokens = int(max_tokens)
max_tokens


np.sum(num_tokens < max_tokens) / len(num_tokens)


x_train_pad = tf.keras.utils.pad_sequences(x_train_tokens, maxlen=max_tokens)


x_test_pad = tf.keras.utils.pad_sequences(x_test_tokens, maxlen=max_tokens)


x_train_pad.shape


x_test_pad.shape


np.array(x_train_tokens[800])


x_train_pad[800]


idx = tokenizer.word_index
inverse_map = dict(zip(idx.values(), idx.keys()))


def tokens_to_string(tokens):
    words = [inverse_map[token] for token in tokens if token!=0]
    text = ' '.join(words)
    return text


x_train[800]


tokens_to_string(x_train_tokens[800])


model = Sequential()


embedding_size = 50


model.add(Embedding(input_dim=num_words,
                    output_dim=embedding_size,
                    input_length=max_tokens,
                    name='embedding_layer'))


model.add(GRU(units=16, return_sequences=True))
model.add(GRU(units=8, return_sequences=True))
model.add(GRU(units=4))
model.add(Dense(1, activation='sigmoid'))


model.compile(loss="binary_crossentropy",
              optimizer="adam",
              metrics=['accuracy'])



model.summary()


model.fit(x_train_pad, y_train, epochs=5, batch_size=256)


result = model.evaluate(x_test_pad, y_test)


result[1]


y_pred = model.predict(x=x_test_pad[0:1000])
y_pred = y_pred.T[0]


cls_pred = np.array([1.0 if p>0.5 else 0.0 for p in y_pred])


cls_true = np.array(y_test[0:1000])


incorrect = np.where(cls_pred != cls_true)
incorrect = incorrect[0]


len(incorrect)


idx = incorrect[0]
idx


text = x_test[idx]
text


y_pred[idx]


cls_true[idx]


text1 = "bu ürün çok iyi herkese tavsiye ederim"
text2 = "kargo çok hızlı aynı gün elime geçti"
text3 = "büyük bir hayal kırıklığı yaşadım bu ürün bu markaya yakışmamış"
text4 = "mükemmel"
text5 = "tasarımı harika ancak kargo çok geç geldi ve ürün açılmıştı tavsiye etmem"
text6 = "hiç resimde gösterildiği gibi değil"
text7 = "kötü yorumlar gözümü korkutmuştu ancak hiçbir sorun yaşamadım teşekkürler"
text8 = "hiç bu kadar kötü bir satıcıya denk gelmemiştim ürünü geri iade ediyorum"
text9 = "tam bir fiyat performans ürünü"
text10 = "beklediğim gibi çıkmadı"
texts = [text1, text2, text3, text4, text5, text6, text7, text8, text9, text10]


tokens = tokenizer.texts_to_sequences(texts)


tokens_pad = tf.keras.utils.pad_sequences(tokens, maxlen=max_tokens)
tokens_pad.shape


model.predict(tokens_pad)

Benim kodum:
Python:
import numpy as np
import pandas as pd
import tensorflow as tf

dataset = pd.read_csv("hepsiburada.csv")

dataset

target = dataset['Rating'].values.tolist()
data = dataset['Review'].values.tolist()

cutoff = int(len(data)*0.80)
x_train, x_test = data[:cutoff], data[cutoff:]
y_train, y_test = target[:cutoff], target[cutoff:]


x_train[500]
y_train[500]

num_words=10000
tokenizer = tf.keras.preprocessing.text.Tokenizer(
    num_words=num_words
)

tokenizer.fit_on_texts(data)

tokenizer.word_index

x_train_tokens = tokenizer.texts_to_sequences(x_train)

x_train_tokens[500]
x_test_tokens = tokenizer.texts_to_sequences(x_test)

num_tokens=[
    len(tokens) for tokens in x_train_tokens+x_test_tokens
]
num_tokens = np.array(num_tokens)

np.mean(num_tokens)
np.max(num_tokens)
np.argmax(num_tokens)

x_train[21941]

max_tokens = np.mean(
    num_tokens+2*np.std(num_tokens)
)
max_tokens = int(max_tokens)
max_tokens

np.sum(num_tokens<max_tokens)/len(num_tokens)

x_train_pad = tf.keras.utils.pad_sequences(
    x_train_tokens,
    maxlen=max_tokens
)

x_test_pad = tf.keras.utils.pad_sequences(
    x_test_tokens,
    maxlen=max_tokens
)

x_train_pad.shape

x_test_pad.shape

np.array(x_train_tokens[800])

x_train_pad[800]

idx=tokenizer.word_index
inverse_map = dict(
    zip(idx.values(),
        idx.keys())
)

def tokens_to_string(tokens):
    words = [
        inverse_map[token] for token in tokens if token!=0
    ]
    text=' '.join(words)
    return text

x_train[600]

tokens_to_string(x_train_tokens[600])
#Bazı kelimelerin olmaması, kelimelerde az olanlar sayılmadığı için.Hatalı kelimelerde az kullanıldığı için.

y_train = np.array(y_train)

model = tf.keras.Sequential()

embedding_size = 50

model.add(tf.keras.layers.Embedding(
    input_dim=num_words,
    output_dim=embedding_size,
    input_length=max_tokens,
    name='embedding_layer'))

model.add(tf.keras.layers.GRU(16,return_sequences=True))
model.add(tf.keras.layers.GRU(8,return_sequences=True))
model.add(tf.keras.layers.GRU(4))
model.add(tf.keras.layers.Dense(1,activation='sigmoid'))

optimizer = tf.keras.optimizers.Adam(learning_rate=1e-3)

model.compile(loss="binary_crossentropy",
              optimizer=optimizer,
              metrics=['accuracy'])
model.summary()


model.fit(x_train_pad,
          y_train,
          epochs=5,
          batch_size=256)

result = model.evaluate(x_test_pad, np.array(y_test))

result[1]

y_pred = model.predict(x=x_test_pad[0:1000])
y_pred = y_pred.T[0]

cls_pred = np.array([1.0 if p>0.5 else 0.0 for p in y_pred])

cls_true = np.array(y_test[0:1000])

incorrect = np.where(cls_pred != cls_true)
incorrect = incorrect[0]

len(incorrect)

idx = incorrect[0]
idx

text = x_test[idx]
text

y_pred[idx]

cls_true[idx]

text1 = "bu ürün çok iyi herkese tavsiye ederim"
text2 = "kargo çok hızlı aynı gün elime geçti"
text3 = "büyük bir hayal kırıklığı yaşadım bu ürün bu markaya yakışmamış"
text4 = "mükemmel"
text5 = "tasarımı harika ancak kargo çok geç geldi ve ürün açılmıştı tavsiye etmem"
text6 = "hiç resimde gösterildiği gibi değil"
text7 = "kötü yorumlar gözümü korkutmuştu ancak hiçbir sorun yaşamadım teşekkürler"
text8 = "hiç bu kadar kötü bir satıcıya denk gelmemiştim ürünü geri iade ediyorum"
text9 = "tam bir fiyat performans ürünü"
text10 = "beklediğim gibi çıkmadı"
texts = [text1, text2, text3, text4, text5, text6, text7, text8, text9, text10]

tokens = tokenizer.texts_to_sequences(texts)
tokens_pad = tf.keras.utils.pad_sequences(tokens,maxlen=max_tokens)
tokens_pad.shape

model.predict(tokens_pad)

@Vavien. ve @bitwise hocalarım sizler çok iyi anlıyorsunuz yardımcı olursanız sevinirim.
 

Evet artık TensorFlow'dan nefret etmeye başladım zaten. Pytorch'a geçmek istiyorum .
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…