Ошибка Tensorflow 2: [прогнозы должны быть >= 0] [Условие x >>= y не выполнено по элементам:] при использовании многослойной нейронной сети с весами классов

#python #machine-learning #keras #deep-learning #tensorflow2.0

Вопрос:

Я получаю следующее сообщение об ошибке при попытке обучить многослойную нейронную сеть набору данных о мошенничестве с кредитными картами.

 InvalidArgumentError:  assertion failed: [predictions must be >= 0] [Condition x >= y did not hold element-wise:] [x (sequential_1/dense_9/Sigmoid:0) = ] [[-nan][-nan][1]...] [y (Cast_5/x:0) = ] [0]
 [[{{node assert_greater_equal/Assert/AssertGuard/else/_1/assert_greater_equal/Assert/AssertGuard/Assert}}]] [Op:__inference_train_function_2751675]

Function call stack:
train_function
 

Когда я изначально тренирую последовательную модель, она работает идеально. Но когда я пытаюсь назначить вес класса и снова тренировать его, у меня возникает эта проблема.

 # Importing required models
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout

# Defining the model
model = Sequential([
    Dense(16, input_dim = 29,activation='relu'),   # input of 29 columns as shown above
    Dense(24,activation='relu'),
    Dropout(0.5),                                   # A dropout added to prevent overfitting
    Dense(24,activation='relu'),
    Dense(24,activation='relu'),
    Dense(1,activation='sigmoid'),                  # Output layer with Sigmoid activation function
])

model.summary()

# Defining loss and optimizer for compiling the model
from tensorflow.keras.optimizers import SGD                      # Stochastic Gradient Descent Optimizer
opt = SGD(learning_rate=0.01, momentum=0.75)

model.compile(optimizer=opt, loss='binary_crossentropy', metrics=METRICS)
model.fit(X_train,y_train,batch_size=15,epochs=10)
 

Приведенный выше код работает нормально. Но приведенный ниже код выдает указанную ошибку.

 weights_assigned = {0:1,1:557}

# Training the model using `class_weight` now
model.fit(X_train,y_train,batch_size=15, class_weight=weights_assigned, epochs=10, shuffle=True)
 

Кто-нибудь может мне в этом помочь?