简体   繁体   中英

AssertionError: Could not compute output Tensor(“dense_17/Sigmoid:0”, shape=(None, 1), dtype=float32)

I'm trying to train DC-CNN model for text classification on a given dataset. What am I doing wrong here?

Code for Model:

def define_model(length, vocab_size):
    # channel 1
    inputs1 = Input(shape=(length,))
    embedding1 = Embedding(vocab_size, 100)(inputs1)
    conv1 = Conv1D(filters=32, kernel_size=4, activation='relu')(embedding1)
    drop1 = Dropout(0.5)(conv1)
    pool1 = MaxPooling1D(pool_size=1)(drop1)
    flat1 = Flatten()(pool1)
 

    # channel 2
    inputs2 = Input(shape=(length,))
    embedding2 = Embedding(vocab_size, 100)(inputs2)
    conv2 = Conv1D(filters=32, kernel_size=6, activation='relu')(embedding2)
    drop2 = Dropout(0.5)(conv2)
    pool2 = MaxPooling1D(pool_size=1)(drop2)
    flat2 = Flatten()(pool2)


 
    merged = concatenate([flat1, flat2])
    
    # interpretation
    dense1 = Dense(10, activation='relu')(merged)
    outputs = Dense(1, activation='sigmoid')(dense1)
    model = Model(inputs=[inputs1, inputs2], outputs=outputs)

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

    # summarize
    print(model.summary())

   
    return model

model = define_model(length, vocab_size)
model.fit([trainX], array(trainLabels), epochs=10, batch_size=16)

I am getting this error:

AssertionError: in user code:

    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:806 train_function  *
        return step_function(self, iterator)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:796 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1211 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica
        return fn(*args, **kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:789 run_step  **
        outputs = model.train_step(data)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:747 train_step
        y_pred = self(x, training=True)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:985 __call__
        outputs = call_fn(inputs, *args, **kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/functional.py:386 call
        inputs, training=training, mask=mask)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/functional.py:517 _run_internal_graph
        assert x_id in tensor_dict, 'Could not compute output ' + str(x)

    AssertionError: Could not compute output Tensor("dense_17/Sigmoid:0", shape=(None, 1), dtype=float32)

I have tried to reshape the inputs "trainX" and "trainLabels" by using this code but I got the same error

trainX=np.reshape(trainX,(40, 50))
trainLabels=np.reshape(trainLabels,(40, 1))

This is the summary of the model:

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_17 (InputLayer)           [(None, 20)]         0                                            
__________________________________________________________________________________________________
input_18 (InputLayer)           [(None, 20)]         0                                            
__________________________________________________________________________________________________
embedding_16 (Embedding)        (None, 20, 100)      541100      input_17[0][0]                   
__________________________________________________________________________________________________
embedding_17 (Embedding)        (None, 20, 100)      541100      input_18[0][0]                   
__________________________________________________________________________________________________
conv1d_16 (Conv1D)              (None, 17, 32)       12832       embedding_16[0][0]               
__________________________________________________________________________________________________
conv1d_17 (Conv1D)              (None, 15, 32)       19232       embedding_17[0][0]               
__________________________________________________________________________________________________
dropout_16 (Dropout)            (None, 17, 32)       0           conv1d_16[0][0]                  
__________________________________________________________________________________________________
dropout_17 (Dropout)            (None, 15, 32)       0           conv1d_17[0][0]                  
__________________________________________________________________________________________________
max_pooling1d_16 (MaxPooling1D) (None, 17, 32)       0           dropout_16[0][0]                 
__________________________________________________________________________________________________
max_pooling1d_17 (MaxPooling1D) (None, 15, 32)       0           dropout_17[0][0]                 
__________________________________________________________________________________________________
flatten_16 (Flatten)            (None, 544)          0           max_pooling1d_16[0][0]           
__________________________________________________________________________________________________
flatten_17 (Flatten)            (None, 480)          0           max_pooling1d_17[0][0]           
__________________________________________________________________________________________________
concatenate_8 (Concatenate)     (None, 1024)         0           flatten_16[0][0]                 
                                                                 flatten_17[0][0]                 
__________________________________________________________________________________________________
dense_16 (Dense)                (None, 10)           10250       concatenate_8[0][0]              
__________________________________________________________________________________________________
dense_17 (Dense)                (None, 1)            11          dense_16[0][0]                   
==================================================================================================
Total params: 1,124,525
Trainable params: 1,124,525
Non-trainable params: 0

How can I fix this error Please?

since you have 2 inputs in keras model, so you have to split your trainX in to 2 different arrays, or a tuple of 2 arrays. you cannot give single array as input.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM