Я использую неправильный компилятор или что-то еще хуже? - PullRequest
0 голосов
/ 02 мая 2020

Описание данных: Входной размер: 5038 значений Flot. Выход: переменная длина. (дополнено '&') Вывод: преобразован в двоичный с использованием One-Hot Encoder. Выходной размер после горячего кодирования составляет двоичный код 6690.

Вот мой код, но точность всегда равна нулю. Даже не меняется. Перепробовал множество конфигураций NN, функций активации и оптимизатора. Пожалуйста, помогите.

import tensorflow as tf
import pandas as pd 
import numpy as np 
import io

df = pd.read_csv('/content/drive/My Drive/Smile_Compiled_data.csv', low_memory=False,)
df.fillna('&',inplace=True)
print(df.shape)


dataset = df.values
X = dataset[:,0:5038]

Y_smile = dataset[:,5038 :5864]

#print (X)
#print(X.shape)
print (Y_smile)
print(Y_smile.shape)

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
enc.fit(Y_smile)
OneHotEncoder(handle_unknown='ignore')
enc.categories_
Y = enc.transform(Y_smile).toarray()
print(Y,Y.shape, Y.dtype)


from sklearn import preprocessing

min_max_scaler = preprocessing.MinMaxScaler()
X_scale = min_max_scaler.fit_transform(X)

from sklearn.model_selection import train_test_split

X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X_scale, Y, test_size=0.3)

X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size=0.5)

print(X_train.shape, X_val.shape, X_test.shape, Y_train.shape, Y_val.shape, Y_test.shape)
print(X_train, X_train.shape)
print(X_val, X_val.shape)
print(X_test, X_test.shape)
print(Y_train, Y_train.shape)
print(Y_val, Y_val.shape)
print(Y_test, Y_test.shape)


filepath = "bestmodelweights.hdf5"
checkpoint = tf.keras.callbacks.ModelCheckpoint(filepath, monitor='val_accuracy')
verbes = tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=10)



odel = tf.keras.Sequential([
                             tf.keras.layers.Dense(512, activation='relu', input_shape=(5038,)),
                             tf.keras.layers.Dense(512, activation='relu'),
                             tf.keras.layers.Dense(512, activation='relu'),
                             tf.keras.layers.Dense(512, activation='relu'),
                             tf.keras.layers.Dense(512, activation='relu'),
                             tf.keras.layers.Dense(512, activation='relu'),
                             tf.keras.layers.Dense(512, activation='relu'),
                             tf.keras.layers.Dense(512, activation='relu'),
                             tf.keras.layers.Dense(6690, activation= 'sigmoid')])

model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.BinaryCrossentropy(from_logits = True), metrics=['accuracy'])


hist = model.fit(X_train, Y_train, epochs=50, callbacks=[checkpoint],validation_data=(X_val, Y_val))

Вывод:

Epoch 1/50
203/203 [==============================] - 2s 10ms/step - loss: 0.6631 - accuracy: 3.0907e-04 - val_loss: 0.6508 - val_accuracy: 0.0000e+00
Epoch 2/50
203/203 [==============================] - 4s 20ms/step - loss: 0.6508 - accuracy: 0.0000e+00 - val_loss: 0.6508 - val_accuracy: 0.0000e+00
Epoch 3/50
203/203 [==============================] - 4s 20ms/step - loss: 0.6508 - accuracy: 0.0000e+00 - val_loss: 0.6508 - val_accuracy: 0.0000e+00
Epoch 4/50
203/203 [==============================] - 4s 20ms/step - loss: 0.6509 - accuracy: 0.0000e+00 - val_loss: 0.6508 - val_accuracy: 0.0000e+00
Epoch 5/50
148/203 [====================>.........] - ETA: 0s - loss: 0.6507 - accuracy: 0.0000e+00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...