Невозможно преобразовать модель keras в тензор потока: объект типа 'Dense' не имеет атрибута 'from_config' - PullRequest
0 голосов
/ 26 апреля 2018

Я борюсь за преобразование моей модели Keras в оценщик TensorFlow. Я получил следующую ошибку:

AttributeError: тип объекта «Плотный» не имеет атрибута «from_config»

А вот и мой код:

from tensorflow import keras
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense

classifier = keras.models.Sequential()
classifier.add(tf.layers.Dense(units = 6, kernel_initializer = keras.initializers.he_uniform(), activation = tf.nn.relu, input_shape =(11,)))
classifier.add(tf.layers.Dense(units = 6, kernel_initializer = keras.initializers.he_uniform(), activation = tf.nn.relu))
classifier.add(tf.layers.Dense(units = 1, kernel_initializer = tf.keras.initializers.he_uniform(), activation = tf.nn.softmax))

classifier.compile(optimizer=tf.keras.optimizers.Adam(lr=0.0001),
                      loss=tf.keras.losses.binary_crossentropy,
                      metric=tf.keras.metrics.categorical_accuracy)


my_estimator = tf.keras.estimator.model_to_estimator(keras_model=classifier)

Ошибка исходит из последней строки кода Я думаю, это потому, что у keras Dense нет хорошего атрибута, но как найти эквивалент, который будет иметь from_config?

Keras==2.1.6
tensorflow==1.7.0

1 Ответ

0 голосов
/ 26 апреля 2018

Похоже, вы используете слой Dense из неправильного пакета: он должен быть tf.keras.layers.Dense, а не tf.layers.Dense.

Обратите внимание, что, хотя у них одинаковое имя класса и множество похожих параметров, на самом деле они не имеют ничего общего: tf.layers.Dense - это высокоуровневый API-интерфейс тензорного потока, не связанный с кератами. Вот почему вы не можете добавить их к classifier.

...