【问题标题】:How to predict from new data set?如何从新数据集进行预测?
【发布时间】:2021-05-31 08:21:08
【问题描述】:

我创建了一个模型来从语音样本中预测情绪,该模型由以下代码制成:

共有 8 种情绪: 中性, 平静, 快乐, 悲伤, 愤怒, 厌恶, 惊讶

我首先提取每个语音样本的特征并将它们放入数据帧中,然后加载 将它们一一对应到 X 和(标记到 Y)然后拆分数据,如下所示:

x_train, x_test, y_train, y_test = train_test_split(X, Y, random_state=0, shuffle=True)

scaler = StandardScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)

x_train = np.expand_dims(x_train, axis=2)
x_test = np.expand_dims(x_test, axis=2)

model=Sequential()
model.add(Conv1D(256, kernel_size=5, strides=1, padding='same', activation='relu', input_shape=(x_train.shape[1], 1)))
model.add(MaxPooling1D(pool_size=5, strides = 2, padding = 'same'))

model.add(Conv1D(256, kernel_size=5, strides=1, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=5, strides = 2, padding = 'same'))

model.add(Conv1D(128, kernel_size=5, strides=1, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=5, strides = 2, padding = 'same'))
model.add(Dropout(0.2))

model.add(Conv1D(64, kernel_size=5, strides=1, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=5, strides = 2, padding = 'same'))

model.add(Flatten())
model.add(Dense(units=32, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(units=8, activation='softmax'))
model.compile(optimizer = 'adam' , loss = 'categorical_crossentropy' , metrics = ['accuracy'])

model.summary()

rlrp = ReduceLROnPlateau(monitor='loss', factor=0.4, verbose=0, patience=2, min_lr=0.0000001)
history=model.fit(x_train, y_train, batch_size=64, epochs=75, validation_data=(x_test, y_test), callbacks=[rlrp])

总准确率达到 89%

现在我想用一个新的数据集进行预测。我需要做什么?

【问题讨论】:

  • 您的问题不清楚。我假设您在问我如何使用该模型?如果是这样,您应该保存模型以供将来预测。

标签: python tensorflow machine-learning keras speech-recognition


【解决方案1】:

如果new_data_x_testnew_data_y_true 是您的新数据集,那么您在训练模型后需要做的一切如下:

scaler = StandardScaler()
new_data_x_test = scaler.transform(new_data_x_test )
new_data_x_test= np.expand_dims(new_data_x_test, axis=2)

model.load_weight(h5)
new_data_y_pred = model.predict(new_data_x_test )

问题是,您应该根据模型要求对其进行改造。接下来,使用适当的评估指标评估 new_data_y_truenew_data_y_pred

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 2021-07-16
    • 2019-10-27
    • 2018-10-15
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多