Hello Community,
I am pretty new to tensorflow even when I have done lots of trainings though. To get a better understanding, I am asking for some help with my use case:
I want to classify vectors in class a and class b.
- A vector consists of 10 numerical features.
- For the supervised learning the vectors are labeled as class a or class b.
- Not only the content of a single vector is important to classify it to a class but also the previous 20 vectors should define, if the actual vector belongs to class a or b
My first approach looks like this:
import tensorflow as tf
import pandas as pd
import array as arr
import numpy as np
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(1, 17)), #8 oder 17
tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(100)
])
x_train = tf.constant(np.genfromtxt('training_data.csv',delimiter=','))
x_label = tf.constant(np.genfromtxt('label_data.csv',delimiter=','))
predictions = model(x_train[:1]).numpy()
tf.nn.softmax(predictions).numpy()
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss_fn(x_label[:1], predictions).numpy()
model.compile(optimizer='adam',
loss=loss_fn,
metrics=['accuracy'])
model.fit(x_train, x_label, epochs=200)
model.evaluate(y_test, y_label, verbose=2)
I think this is far too simple. I have no clue what shape or architecture the network should have. After 3 epochs there is no change on the loss function anymore. I have no idea if this approach makes any sense at all. And I have no clue how to solve requirement 3) from my use case.
Any help is deeply appreciated.
BR, Ray