Я новичок в Tensorflow и Keras. Я загрузил набор данных из CSV и создал train_dataset как таковой:
column_names = ['a', 'date', 'c', 'd', 'e', 'f']
label_name = column_names[0]
feature_names = column_names[1:]
class_names = ['good', 'bad']
train_dataset = tf.data.experimental.make_csv_dataset(
train_dataset_fp,
batch_size,
column_names=column_names,
label_name=label_name,
num_epochs=1)
features, labels = next(iter(train_dataset))
print(features)
Мои функции - это OrderedDict и печатаю как:
OrderedDict ([('b', ), ('Дата', ), ('d', ), ('е', ), ('f', )])
Как видите, у одного из них dtype = int64. Затем я использую следующую функцию для упаковки функций в массив:
def pack_features_vector(features, labels):
features = tf.stack(list(features.values()), axis=1)
return features, labels
Однако, когда я запускаю ее:
train_dataset = train_dataset.map(pack_features_vector)
, я получаю следующую ошибку:
«TypeError: тензоры в списке, переданном в« значения »операции« Pack », имеют типы [int32, int64, int32, int32, int32], которые не совпадают со всеми.»
Я понимаю, что проблема в функция стека. У меня есть дата в формате эпохи в качестве второй функции, которая была прочитана как int64. Я думаю, что проще всего преобразовать все тензоры в один и тот же dType, но я не уверен, как это сделать. Я вижу, что коллекция функций - это OrderedDict из Numpy массивов, но я не знаю, как изменить dType элементов. Я пробовал следующее, это не дало результатов, но когда я снова распечатал свои функции, все типы dtypes остались прежними:
for k,v in train_dataset:
tf.dtypes.cast(v, tf.int64)
Я был бы очень признателен за любую помощь. Спасибо.