我是使用Keras框架实现神经网络的新手,我也检查了一些关于Tensorflow的基本内容。
我试图弄清楚如何将我的训练数据(.wav文件的mfcc coeffs)分成批量以适合我的模型,以及如何处理不同持续时间的样本(因此以mfcc格式处理不同形状)。 / p>
我在Tensorflow中遇到了以下代码片段,但我无法理解它是如何工作的,以便在Keras中实现类似的功能。任何帮助将代码“转换”为Keras逻辑或通常用于我的问题都将非常感激。谢谢。
label = [] # output label of each file
mfcc_file = [] # filenames of all .npy files containing mfcc coeffs
# Load from corresponding files and fill in label, mfcc_file
# ....
# to constant tensor
label_t = tf.convert_to_tensor(label)
mfcc_file_t = tf.convert_to_tensor(mfcc_file)
# create queue from constant tensor
label_q, mfcc_file_q \
= tf.train.slice_input_producer([label_t, mfcc_file_t], shuffle=True)
# create label, mfcc queue
label_q, mfcc_q = self.load_mfcc([label_q, mfcc_file_q])
# create batch queue with dynamic pad
batch_queue = tf.train.batch([label_q, mfcc_q], batch_size,
shapes=[(None,), (20, None)],
num_threads=64, capacity=batch_size*32,
dynamic_pad=True)
# split data
self.label, self.mfcc = batch_queue
# batch * time * dim
self.mfcc = self.mfcc.sg_transpose(perm=[0, 2, 1])
# calc total batch count
self.num_batch = len(label) // batch_size
# print info
tf.sg_info('%s set loaded.(total data=%d, total batch=%d)'
% (set_name.upper(), len(label), self.num_batch))