ValueError: Не удалось преобразовать массив NumPy в Tensor (неподдерживаемый тип объекта numpy .ndarray) - PullRequest
1 голос
/ 25 марта 2020

tfidf_Train и features_Train - это списки списков, содержащих числа с плавающей точкой, то есть [[0.14, 0.22 ...], [0.52,0.34]] Я попытался преобразовать переменные в массив np с помощью np.asarray (), но я все еще получаю ошибку в нижней части кода при установке моей модели. Цени любую помощь.

    inp = Input(shape=(sen_Len,))
    embed = Embedding(len(term_Index)+1, emb_Dim, weights=[emb_Mat], 
    input_length=sen_Len, trainable=False)(inp)
    emb_input = LSTM(60, dropout=0.1, recurrent_dropout=0.1)(embed)
    tfidf_i = Input(shape=(1,))
    conc = Concatenate()([emb_input, tfidf_i])
    drop = Dropout(0.2)(conc)
    dens = Dense(2)(drop)
    acti = Activation('sigmoid')(dens)

    model = Model([inp, tfidf_i], acti)

    model.compile(optimizer='adam', loss='binary_crossentropy', metrics = 
    ['accuracy'])

    history = model.fit([features_Train,tfidf_Train], target_Train, epochs = 50, 
    batch_size=128, validation_split=0.2)

Ошибка:

    x = _process_numpy_inputs(x)
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/keras/engine/data_adapter.py", line 1048, in 
    _process_numpy_inputs
    inputs = nest.map_structure(_convert_non_tensor, inputs)
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/util/nest.py", line 568, in map_structure
    structure[0], [func(*x) for x in entries],
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/util/nest.py", line 568, in <listcomp>
    structure[0], [func(*x) for x in entries],
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/keras/engine/data_adapter.py", line 1045, in 
    _convert_non_tensor
    return ops.convert_to_tensor(x)
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/framework/ops.py", line 1314, in convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/framework/tensor_conversion_registry.py", line 52, 
    in _default_conversion_function
    return constant_op.constant(value, dtype, name=name)
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/framework/constant_op.py", line 258, in constant
    allow_broadcast=True)
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/framework/constant_op.py", line 266, in 
    _constant_impl
    t = convert_to_eager_tensor(value, ctx, dtype)
    File "/home/stud/henrikm/anaconda3/lib/python3.7/site- 
    packages/tensorflow_core/python/framework/constant_op.py", line 96, in 
    convert_to_eager_tensor
    return ops.EagerTensor(value, ctx.device_name, dtype)
    ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type 
    numpy.ndarray).

1 Ответ

0 голосов
/ 09 апреля 2020

Я решил проблему, используя последовательную модель, удалив строки 5 и 6 (я использовал только один входной слой) и конкатенируя tfidf_Train к features_Train, используя np.concatenate вместо слоя Concatenate.

...