#tensorflow
#tensorflow
Вопрос:
Я хочу ввести в одномерный CNN последовательность фиксированной длины и хочу, чтобы она делала прогноз (регрессию), но я хочу иметь переменный размер пакета во время обучения. Учебные пособия на самом деле не помогают.
В моем входном слое у меня есть что-то вроде этого:
input = tf.placeholder(tf.float32, [None, sequence_length], name="input")
y = tf.placeholder(tf.float32, [None, 1], name="y")
итак, я предполагаю, что None
размерность может быть переменным размером пакета любого числа, поэтому текущее input
измерение является batch_size * sequence_length
, и я должен передать в сеть 2d np-массив с размерами any * sequence_length
tf.nn.conv1d
ожидается, что 3-D, поскольку мой ввод представляет собой один канал, который представляет собой 1 np массив sequence_length
наблюдений, входные данные, которые мне нужно будет передать в cnn, должны быть 1*batch_size * sequence_length
, с другой стороны, если бы у меня было 2 разные последовательности, которые я объединяю, чтобы предсказать одно значение, в итоге это было бы 2*batch_size * sequence_length
, и мне также нужно было бы объединить 2 разных канала. Итак, в моем случае мне нужно
input = tf.expand_dims(input, -1)
и затем фильтр также выполняет то же самое:
filter_size = 5
channel_size = 1
num_filters = 10
filter_shape = [filter_size, channel_size, num_filters]
filters = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="filters")
tf.nn.conv1d(value=input, filters=filters, stride=1)
После этого я добавляю слой FC, но сеть не может ничего узнать, даже базовую функцию, такую как sin (x), правильно ли выглядит приведенный выше код?
Также как я могу выполнить максимальное распределение?