Исполнительное резюме:
int a[17];
size_t n = sizeof(a)/sizeof(a[0]);
Чтобы определить размер вашего массива в байтах, вы можете использовать оператор sizeof
:
int a[17];
size_t n = sizeof(a);
На моем компьютере, ints имеют длину 4 байта, поэтому n равно 68.
Чтобы определить количество элементов в массиве, мы можем разделить общий размер массива на размер элемента массива. Вы можете сделать это с типом, например:
int a[17];
size_t n = sizeof(a) / sizeof(int);
и получить правильный ответ (68/4 = 17), но если тип a
изменился, у вас будет неприятная ошибка, если вы также забыли изменить sizeof(int)
.
Таким образом, предпочтительным делителем является sizeof(a[0])
, размер элемента zeroeth массива.
int a[17];
size_t n = sizeof(a) / sizeof(a[0]);
Еще одно преимущество что теперь вы можете легко параметризовать имя массива в макросе и получить:
#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
int a[17];
size_t n = NELEMS(a);
Вы подаете список строк в модель, чего она не ожидает. Вы можете использовать модуль keras.preprocessing.text
для преобразования текста в целую последовательность. Более конкретно, вы можете подготовить такие данные, как:
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
tk = Tokenizer()
tk.fit_on_texts(texts)
index_list = tk.texts_to_sequences(texts)
x_train = pad_sequences(index_list, maxlen=maxlen)
Теперь x_train
(a n_samples * maxlen
ndarray типа np.int
) является законным входом для модели.