Если вы собираетесь использовать NN, я сначала начну с маленького nn и посмотрю, насколько хорошо он работает, вы можете использовать пример игрушки MNIST из здесь .
Просто отметьте, что вам нужно будет использовать собственные данные вместо mnist:
import tensorflow as tf
x_train, y_train = load_train_data()
x_test, y_test = load_test_data()
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
Обратите внимание, что я «изобрел» 2 функции: load_train_data()
и load_test_data()
, вам нужно реализовать их для ваших данныхи возвращает кортеж ((samples,x,y), labels)
для каждой функции.
Как только вы почувствуете, я хотел бы изучить немного более продвинутые сети, вы можете посмотреть здесь: https://towardsdatascience.com/a-simple-2d-cnn-for-mnist-digit-recognition-a998dbc1e79a, это хорошее руководство для сети 2d CNN, просто используйте ваши функции загрузки данныхвместо мниста.
Поскольку теперь вы, вероятно, окажетесь лицом к стене, поскольку у вас недостаточно данных, вам необходимо применить некоторое увеличение данных.
Существует очень хорошее решение ' Глубинные диффеоморфные сети трансформаторов ' из последнего CVPR, очень хорошо работает с классификацией цифр с небольшим количеством выборок.Вы можете найти код mnist здесь , снова использовать ваши функции для данных.