model.fit_generator : Не удается преобразовать символьный тензор (args_2:0) в массив numpy

#python #numpy #tensorflow #keras #data-fitting

Вопрос:

Я использую tenserflow для построения модели

 inputs1 = Input(shape=(2048,))
fe1 = Dropout(0.5)(inputs1)
fe2 = Dense(256, activation='relu')(fe1)
inputs2 = Input(shape=(max_length,))
se1 = Embedding(vocab_size, embedding_dim, mask_zero=True)(inputs2)
se2 = Dropout(0.5)(se1)
se3 = LSTM(256)(se2)

decoder1 =tf.keras.layers.Add()([fe2, se3])
decoder2 = Dense(256, activation='relu')(decoder1)
outputs = Dense(vocab_size, activation='softmax')(decoder2)
model = Model(inputs=[inputs1, inputs2], outputs=outputs)
 

Затем я составляю его

 model.compile(loss='categorical_crossentropy', optimizer='adam')
 

тогда я использую подгонку

 for i in range(epochs):
    generator = data_generator(train_descriptions, train_features, wordtoix, max_length, number_pics_per_bath)
    model.fit_generator(generator, epochs=1, steps_per_epoch=steps, verbose=1)
 

Ошибка, которую я получаю, заключается в следующем :

 C:...../Anaconda3libsite-packagestensorflow_corepythonkerasenginetraining_utils.py:513 <listcomp>
    data = [np.asarray(d) for d in data]
C:.....Anaconda3libsite-packagesnumpycore_asarray.py:83 asarray
    
C:....Anaconda3libsite-packagestensorflow_corepythonframeworkops.py:728 __array__
    " array.".format(self.name))

NotImplementedError: Cannot convert a symbolic Tensor (args_2:0) to a numpy array.
 

Я не понимаю, в чем проблема . Я зашел в каталог, где произошла ошибка, и изменил np.asarray(d) для d в данных на K. asarray(d) для d в данных, как я видел в некотором решении, связанном с несовместимостью между Keras и numpy. Я также попытался обновить, а затем понизить эти 2 библиотеки. Это не сработало!
Может кто-нибудь, пожалуйста, помочь мне в этом?

Комментарии:

1. Опишите для нас природу symbolic Tensor А. Это звучит «виртуально», «символически», не совсем так. Массив должен содержать действительные числа.

2. Эта проблема, вероятно, связана с совместимостью версий Numpy или Python. Tensorflow не поддерживает Python 3.9. Убедитесь, что установлен python >3.9. Спасибо!