This program creates a model with two inputs and two outputs. It trains on random data and prints predictions and training accuracies.
import numpy as np
from tensorflow.keras.layers import Input, Dense, concatenate
from tensorflow.keras.models import Model
# Define two inputs
input1 = Input(shape=(4,))
input2 = Input(shape=(3,))
# Process each input
x1 = Dense(8, activation='relu')(input1)
x2 = Dense(8, activation='relu')(input2)
# Combine processed inputs
combined = concatenate([x1, x2])
# Define two outputs
output1 = Dense(1, activation='sigmoid', name='output1')(combined)
output2 = Dense(2, activation='softmax', name='output2')(combined)
# Create model
model = Model(inputs=[input1, input2], outputs=[output1, output2])
# Compile model
model.compile(optimizer='adam',
loss={'output1': 'binary_crossentropy', 'output2': 'categorical_crossentropy'},
metrics={'output1': 'accuracy', 'output2': 'accuracy'})
# Generate dummy data
x1_data = np.random.random((100, 4))
x2_data = np.random.random((100, 3))
y1_data = np.random.randint(2, size=(100, 1))
y2_data = np.zeros((100, 2))
y2_data[np.arange(100), np.random.randint(2, size=100)] = 1
# Train model
history = model.fit([x1_data, x2_data], [y1_data, y2_data], epochs=3, batch_size=10, verbose=0)
# Predict on new data
preds = model.predict([x1_data[:2], x2_data[:2]])
print('Output 1 predictions:', preds[0])
print('Output 2 predictions:', preds[1])
print('Training accuracy for output1:', history.history['output1_accuracy'][-1])
print('Training accuracy for output2:', history.history['output2_accuracy'][-1])