Tensorflow2.1入门(基于API)文件处理——构建自己的训练集

接触神经网络也有一个星期了,感觉现在对神经网络还是比较懵,如果现在实验室获取了一批数据,要对数据进行分类处理,那么我应该如何构建属于自己的数据集呢?API上Numpy 的使用说明给出了答案。整个过程还是比较简单的。传送门

数据准备:

关于前期,我们不再累述,代码如下:

from __future__ import absolute_import, division, print_function, unicode_literals
import numpy as np
import tensorflow as tf
import tensorflow_datasets as tfds
DATA_URL = 'https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz'
path = tf.keras.utils.get_file('mnist.npz', DATA_URL)
with np.load(path) as data:
  train_examples = data['x_train']
  train_labels = data['y_train']
  test_examples = data['x_test']
  test_labels = data['y_test']

构建属于自己的数据集:

train_dataset = tf.data.Dataset.from_tensor_slices((train_examples, train_labels))
test_dataset = tf.data.Dataset.from_tensor_slices((test_examples, test_labels))

整篇博文最关键的两句代码就在这里了,如果我们现在手上有一些数据,需要构造自己的训练集与测试集,然后使用上述代码就可以了。
为了更好的理解,我在这里给出了shape:
train_examples.shape:(60000,28,28)
train_labels.shape:(60000,)
这也就是说,只要将自己采集的数据整合成这样的格式,就可以构建数据集了。(此处的60000指的是样本数量)

BATCH_SIZE = 64
SHUFFLE_BUFFER_SIZE = 100
train_dataset = train_dataset.shuffle(SHUFFLE_BUFFER_SIZE).batch(BATCH_SIZE)
#shuffle打乱训练集的顺序,而batch对数据进行分批。
test_dataset = test_dataset.batch(BATCH_SIZE)

这里简单的对数据集进行分批与洗牌。

后续验证:

model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer=tf.keras.optimizers.RMSprop(),
                loss=tf.keras.losses.SparseCategoricalCrossentropy(),
                metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])
model.fit(train_dataset, epochs=10)
model.evaluate(test_dataset)

后续的验证过程我们已经很熟悉了,这里并不是本篇的重点。

总结:

在学习过程中,先跳过了CSV文件的处理,觉得CSV处理的API虽然是中文的,但是看得一头雾水,一些处理不好理解,注释写不清楚,所以先学习了构建数据集。
构建数据集也是一个实用的技能吧,又向BCI的处理迈出了微乎其微的一步。。。。。+!U!+!U!

你可能感兴趣的:(Tensorflow实战入门)