ValueError Нет значений, не поддерживаемых в _make_train_function (Keras)
Попытка вписать модель в Keras, инициализированную и скомпилированную, как показано ниже, но получить None ValueErrors. Каковы рекомендуемые способы отладки таких ошибок? Я новичок в Керасе.
Могу ли я обнаружить проблему раньше, то есть при инициализации или компиляции модели?
model = Model((64,64,3))
opt = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0)
binLoss = "binary_crossentropy"
model.compile(optimizer = opt, loss = binLoss, metrics = ["accuracy"])
ValueError Traceback (most recent call last)
<ipython-input-15-5b61099068d8> in <module>()
1 ### START CODE HERE ### (1 line)
----> 2 happyModel.fit(x = X_train, y = Y_train, epochs = 100, batch_size = 32)
3 ### END CODE HERE ###
/opt/conda/lib/python3.6/site-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)
1574 else:
1575 ins = x + y + sample_weights
-> 1576 self._make_train_function()
1577 f = self.train_function
1578
...
/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/tensor_util.py in make_tensor_proto(values, dtype, shape, verify_shape)
362 else:
363 if values is None:
--> 364 raise ValueError("None values not supported.")
365 # if dtype is provided, forces numpy array to be the type
366 # provided if possible.
ValueError: None values not supported.
2 ответа
Обновите Keras, потому что до 2.1.3 Ни один не был допустимым параметром для epsilon
Замена opt на "adam" решает проблему, но мне неясно, почему именно так, как указано в инструкции на https://keras.io/optimizers/ должно сработать.
Это недопустимая конструкция модели с использованием Keras API. Вы должны посмотреть документацию, в которой есть 30-секундное руководство, показывающее, как построить минимальную модель:
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
# ...
Если вам по-прежнему не нравится то, что говорится в документации, вы можете начать с учебника, который объясняет некоторые концепции.