У меня есть нейронная сеть из генератора данных tf.data
и модели tf.keras
следующим образом (упрощенная версия, поскольку она будет слишком длинной):
dataset = ...
Объект tf.data.Dataset
, который с помощью метода next_x
вызывает get_next
для итератора x_train
, а для метода next_y
вызывает get_next
для итератора y_train
.Каждая метка представляет собой массив (1, 67)
в формате «один горячий».
Слои:
input_tensor = tf.keras.layers.Input(shape=(240, 240, 3)) # dim of x
output = tf.keras.layers.Flatten()(input_tensor)
output= tf.keras.Dense(67, activation='softmax')(output) # 67 is the number of classes
Модель:
model = tf.keras.models.Model(inputs=input_tensor, outputs=prediction)
model.compile(optimizer=tf.train.AdamOptimizer(), loss=tf.losses.softmax_cross_entropy, metrics=['accuracy'])
model.fit_generator(gen(dataset.next_x(), dataset.next_y()), steps_per_epochs=100)
gen
определяется следующим образом:
def gen(x, y):
while True:
yield(x, y)
Моя проблема в том, что когда я пытаюсь запустить его, я получаю сообщение об ошибке в model.fit
части:
ValueError: Cannot take the length of Shape with unknown rank.
Любые идеи приветствуются!