How do I solve a "TypeError: __array__() takes 1 positional argument but 2 were given" Keras error?
I am trying to build a multi-input CNN using Keras/Tensorflow. I have 5000 'smile' training inputs which are 1D arrays (shape = (100,)). These inputs have a maximum length of 100. I have 5000 'protein' training inputs which are also 1D arrays (shape = (1500,), which have a maximum length of 1500.
I have the following data types and shapes:
#type(test_protein)#numpy.ndarray of class 'numpy.ndarray' #int32
#type(val_protein)#numpy.ndarray of class 'numpy.ndarray' #int32
#type(train_protein)#numpy.ndarray of class 'numpy.ndarray' #int32
#type(train_smile)#numpy.ndarray of class 'numpy.ndarray' #int32
#type(val_smile)#numpy.ndarray of class 'numpy.ndarray' #int32
#type(test_smile) #)#numpy.ndarray of class 'numpy.ndarray' #int32
#type(val_labels)#numpy.ndarray of class 'numpy.float64'
#type(test_labels)#numpy.ndarray of class 'numpy.float64'
#type(train_labels)#numpy.ndarray of class 'numpy.float64'
I have built the following Keras CNN model:
maximum_SMILES_length=100
maximum_amino_acid_sequence_length=1500
NUM_FILTERS = 32
FILTER_LENGTH1 = 4
FILTER_LENGTH2 = 8
XDinput = Input(shape=(maximum_SMILES_length,1))
XTinput = Input(shape=(maximum_amino_acid_sequence_length,1))
encode_smiles= Conv1D(filters=NUM_FILTERS, kernel_size=FILTER_LENGTH1, activation='relu', padding='valid', strides=1)(XDinput)
encode_smiles = Conv1D(filters=NUM_FILTERS*2, kernel_size=FILTER_LENGTH1, activation='relu', padding='valid', strides=1)(encode_smiles)
encode_smiles = Conv1D(filters=NUM_FILTERS*3, kernel_size=FILTER_LENGTH1, activation='relu', padding='valid', strides=1)(encode_smiles)
encode_smiles = GlobalMaxPooling1D()(encode_smiles) #pool_size=pool_length[i]
encode_protein = Conv1D(filters=NUM_FILTERS, kernel_size=FILTER_LENGTH2, activation='relu', padding='valid', strides=1)(XTinput)
encode_protein = Conv1D(filters=NUM_FILTERS*2, kernel_size=FILTER_LENGTH2, activation='relu', padding='valid', strides=1)(encode_protein)
encode_protein = Conv1D(filters=NUM_FILTERS*3, kernel_size=FILTER_LENGTH2, activation='relu', padding='valid', strides=1)(encode_protein)
encode_protein = GlobalMaxPooling1D()(encode_protein)
encode_interaction = keras.layers.concatenate([encode_smiles, encode_protein])
FC1 = Dense(1024, activation='relu')(encode_interaction)
FC2 = Dropout(0.1)(FC1)
FC2 = Dense(1024, activation='relu')(FC2)
FC2 = Dropout(0.1)(FC2)
FC2 = Dense(512, activation='relu')(FC2)
predictions = Dense(1, kernel_initializer='normal')(FC2)
interactionModelA = Model(inputs=[XDinput, XTinput], outputs=[predictions])
!pip install lifelines
from lifelines.utils import concordance_index
interactionModelA.compile(optimizer='adam', loss='mean_squared_error', metrics=[concordance_index])
epochs=100
history = interactionModelA.fit(x=[train_smile, train_protein],y=train_labels,
validation_data=([val_smile, val_protein],val_labels),
epochs=epochs,
I get the following error message:
TypeError: in user code:
/usr/local/lib/python3.7/dist-packages/keras/engine/training.py:830 train_function *
return step_function(self, iterator)
/usr/local/lib/python3.7/dist-packages/keras/engine/training.py:813 run_step *
outputs = model.train_step(data)
/usr/local/lib/python3.7/dist-packages/keras/engine/training.py:775 train_step *
self.compiled_metrics.update_state(y, y_pred, sample_weight)
/usr/local/lib/python3.7/dist-packages/keras/engine/compile_utils.py:457 update_state *
metric_obj.update_state(y_t, y_p, sample_weight=mask)
/usr/local/lib/python3.7/dist-packages/keras/metrics.py:169 decorated *
update_op = update_state_fn(*args, **kwargs)
/usr/local/lib/python3.7/dist-packages/keras/metrics.py:155 update_state_fn *
return ag_update_state(*args, **kwargs)
/usr/local/lib/python3.7/dist-packages/keras/metrics.py:641 update_state *
matches = ag_fn(y_true, y_pred, **self._fn_kwargs)
/usr/local/lib/python3.7/dist-packages/lifelines/utils/concordance.py:91 concordance_index *
event_times, predicted_scores, event_observed = _preprocess_scoring_data(event_times, predicted_scores, event_observed)
/usr/local/lib/python3.7/dist-packages/lifelines/utils/concordance.py:274 _preprocess_scoring_data *
event_times = np.asarray(event_times, dtype=float)
/usr/local/lib/python3.7/dist-packages/numpy/core/_asarray.py:83 asarray **
return array(a, dtype, copy=False, order=order)
TypeError: __array__() takes 1 positional argument but 2 were given
I am not sure what is causing the error. Have I incorrectly defined Input(shape=...
. Or is it to do with the structure of my data?
Topic cnn keras tensorflow bioinformatics neural-network
Category Data Science