Python 创建验证样本

Python 创建验证样本,python,tensorflow,keras,deep-learning,neural-network,Python,Tensorflow,Keras,Deep Learning,Neural Network,我目前正在训练我的神经网络。不幸的是,我忘了保留几个样品进行验证。我如何合并这个 我有一个dok矩阵,它创建一个稀疏矩阵,然后使用get\u train\u sampels()转换数据。现在如何合并代码的验证样本 示例来自: 我的代码: def get_train_samples(train_mat, num_negatives): user_input, item_input, labels = [], [], [] num_user, num_item = train_mat

我目前正在训练我的神经网络。不幸的是,我忘了保留几个样品进行验证。我如何合并这个

我有一个dok矩阵,它创建一个稀疏矩阵,然后使用
get\u train\u sampels()
转换数据。现在如何合并代码的验证样本

示例来自:

我的代码:

def get_train_samples(train_mat, num_negatives):
    user_input, item_input, labels = [], [], []
    num_user, num_item = train_mat.shape
    for (u, i) in train_mat.keys():
        user_input.append(u)
        item_input.append(i)
        labels.append(1)
        # negative instances
        for t in range(num_negatives):
            j = np.random.randint(num_item)
            while (u, j) in train_mat.keys():
                j = np.random.randint(num_item)
            user_input.append(u)
            item_input.append(j)
            labels.append(0)
    return user_input, item_input, labels
.
.
.
train_mat = sp.load_npz('matrix.npz')
num_users, num_items = train_mat.shape
.
.
.
model = get_model(num_users, num_items, latent_dim, dense_layers, reg_layers, reg_mf[0])
model.compile(optimizer=Adam(lr=learning_rate), loss='binary_crossentropy', metrics=['accuracy'])
user_input, item_input, labels = get_train_samples(train_mat, num_negatives)

hist = model.fit([np.array(user_input), np.array(item_input)], np.array(labels)
                 , epochs=epochs, verbose=verbose, shuffle=True, batch_size = batch_size)

编辑

试试这个:

train_mat = sp.load_npz('matrix.npz')
val_mat = train_mat[-10000:]
train_mat = train_mat[:-10000]

num_users, num_items = train_mat.shape
.
.
.
model = get_model(num_users, num_items, latent_dim, dense_layers, reg_layers, reg_mf[0])
model.compile(optimizer=Adam(lr=learning_rate), loss='binary_crossentropy', metrics=['accuracy'])
user_input, item_input, labels = get_train_samples(train_mat, num_negatives)
val_user_input, val_item_input, val_labels = get_train_samples(train_mat, num_negatives)

hist = model.fit([np.array(user_input), np.array(item_input)], 
  np.array(labels), 
  epochs=epochs, 
  verbose=verbose, 
  validation_data=([np.array(val_user_input), np.array(val_item_input)], 
  np.array(val_labels)),
  shuffle=True, batch_size = batch_size)

你必须重新开始训练。否则,您的估价损失可能不会显示出过度拟合。

谢谢您的帮助!不幸的是,verbose仍然没有显示验证丢失?请尝试将verbose=1设置为
验证丢失,并在epoch结束时计算精度
train_mat = sp.load_npz('matrix.npz')
val_mat = train_mat[-10000:]
train_mat = train_mat[:-10000]

num_users, num_items = train_mat.shape
.
.
.
model = get_model(num_users, num_items, latent_dim, dense_layers, reg_layers, reg_mf[0])
model.compile(optimizer=Adam(lr=learning_rate), loss='binary_crossentropy', metrics=['accuracy'])
user_input, item_input, labels = get_train_samples(train_mat, num_negatives)
val_user_input, val_item_input, val_labels = get_train_samples(train_mat, num_negatives)

hist = model.fit([np.array(user_input), np.array(item_input)], 
  np.array(labels), 
  epochs=epochs, 
  verbose=verbose, 
  validation_data=([np.array(val_user_input), np.array(val_item_input)], 
  np.array(val_labels)),
  shuffle=True, batch_size = batch_size)