Я получаю сообщение об ошибке, которое не могу понять, когда запускаю свою нейронную сеть в Keras, как только я ввожу вес класса - PullRequest
0 голосов
/ 28 мая 2020
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1d (Conv1D)              (None, 35, 32)            96        
_________________________________________________________________
batch_normalization (BatchNo (None, 35, 32)            128       
_________________________________________________________________
dropout (Dropout)            (None, 35, 32)            0         
_________________________________________________________________
conv1d_1 (Conv1D)            (None, 34, 64)            4160      
_________________________________________________________________
batch_normalization_1 (Batch (None, 34, 64)            256       
_________________________________________________________________
dropout_1 (Dropout)          (None, 34, 64)            0         
_________________________________________________________________
flatten (Flatten)            (None, 2176)              0         
_________________________________________________________________
dense (Dense)                (None, 64)                139328    
_________________________________________________________________
dropout_2 (Dropout)          (None, 64)                0         
_________________________________________________________________
dense_1 (Dense)              (None, 1)                 65        
=================================================================
Total params: 144,033
Trainable params: 143,841
Non-trainable params: 192

InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-14-09a8a255f317> in <module>()
----> 1 history = model.fit(X_Train,Y_Train, epochs = epochs, validation_data =(X_Test,Y_Test), verbose=1,class_weight=class_weights1)

8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     58     ctx.ensure_initialized()
     59     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60                                         inputs, attrs, num_outputs)
     61   except core._NotOkStatusException as e:
     62     if name is not None:

InvalidArgumentError: 2 root error(s) found.
  (0) Invalid argument:  indices[31] = -9223372036854775808 is not in [0, 2)
     [[{{node GatherV2}}]]
     [[IteratorGetNext]]
     [[IteratorGetNext/_2]]
  (1) Invalid argument:  indices[31] = -9223372036854775808 is not in [0, 2)
     [[{{node GatherV2}}]]
     [[IteratorGetNext]]
0 successful operations.
0 derived errors ignored. [Op:__inference_train_function_6381]

Function call stack:
train_function -> train_function

Каким-то образом я получаю огромное отрицательное число? Мой набор данных - это все процентильные данные, поэтому числа от 0 до 1.

Также вот код для настройки модели:

class_weights1 = {0: 1.,
                1: 50.}

epochs = 1
model = Sequential()
model.add(Conv1D(filters = 32, kernel_size = 2, activation='relu',input_shape=(36,1)))
model.add(BatchNormalization())
model.add(Dropout(0.2))

model.add(Conv1D(filters = 64, kernel_size = 2, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))

model.add(Flatten())
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(1,activation='sigmoid'))

И затем код для его компиляции и запуска:

model.compile(optimizer=Adam(lr=0.005),loss='binary_crossentropy',metrics=['accuracy'])

history = model.fit(X_Train,Y_Train, epochs = epochs, validation_data =(X_Test,Y_Test), verbose=1,class_weight=class_weights1)

Я знаю, что это проблема с моим class_weight, потому что, когда я его удаляю, все работает (но модель ужасна, потому что данные несбалансированы, и мне нужно увеличить вес класса меньшинства, чтобы приспособиться к этот).

1 Ответ

0 голосов
/ 29 мая 2020

Я понял, это потому, что в Y_Train было какое-то NaN ...

...