'How to use `evaluate` after `fit` with `validation_split` parameter?

I am using Keras to perform some ANN training. At some point, I am using model.fit() on a Sequential model and I use the validation_split parameter, e.g.:

model.fit(..., validation_split=0.3)

Then, I would like to use model.evaluate() on the validation data as produced by validation_split. Is there a way to do so? Or do I have to just forget about validation_split, perform the splitting manually and the validation likewise?



Solution 1:[1]

Forget about validation_split, perform the splitting using sklearn.

from sklearn.model_selection import train_test_split


X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.33, random_state=42)
model.fit(X_train, y_train, validation_data=[X_val, y_val])

Solution 2:[2]

You can evaluate validation data on the end of each validation step (e.g epoch). To have control over metrics you can use keras.callbacks.Callback and Tensorboard.

If you really want to use evaluate() on validation data then splitting before fit is needed.

Solution 3:[3]

train_eval = model.evaluate(x_train[:int(len(x_train)*(1-validation_split)-1)], y_train[:int(len(y_train)*(1-validation_split)-1)]) val_eval = model.evaluate(x_train[int(len(x_train)*(1-validation_split)-1):], y_train[int(len(x_train)*(1-validation_split)-1):])

Solution 4:[4]

Message settlement options

  • Message sending is performed using the ServiceBusSender. Receiving is performed using the ServiceBusReceiver.
  • It indicates to the broker that the message has been successfully processed, and the message can then be removed from the queue. The broker then responds with the settlement result.
  • When the processing completes successfully, the consumer sends a positive acknowledgment to the broker by calling Complete API.
string connectionString = "<conn_string>"; 
string queueName = "<QueueName>"; 

// since ServiceBusClient implements IAsyncDisposable we create it with "await using" 
 await  using  var client = new ServiceBusClient(connectionString); 
 
 // create the sender 
 ServiceBusSender sender = client.CreateSender(queueName); 
 
 // create a message that we can send. UTF-8 encoding is used when providing a string. 
 ServiceBusMessage message = new ServiceBusMessage("Hello EveryOne!"); 
 
 // send the message  
 await sender.SendMessageAsync(message); 

// create a receiver that we can use to receive the message 
ServiceBusReceiver receiver = client.CreateReceiver(queueName); 

// the received message is a different type as it contains some service set properties 
ServiceBusReceivedMessage receivedMessage = await receiver.ReceiveMessageAsync(); 

// get the message body as a string  
string body = receivedMessage.Body.ToString();
Console.WriteLine(body);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 0x01h
Solution 2 jacekblaz
Solution 3 Brockenspook
Solution 4 HarshithaVeeramalla-MT