Я работаю над проблемой многоклассной сегментации динамических временных рядов с Keras (Tensorflow версия 2.12.0), и я хотел посмотреть, что произойдет, когда я упал в плотный слой в сетевую архитектуру. Мое ожидание состоит в том, что для любой ситуации, когда изменение размера ввода (например, динамические временные ряды) вам нужно будет включить какой -либо слой объединения, который будет поддерживать фиксированную форму ввода в плотный слой. Мне удалось получить его работу без каких -либо слоев объединения, и мне интересно, почему я не получаю ошибку на плотном уровне при передаче входов динамического размера в сеть.
def residual_block(input_layer, filters=64, kernel_size=(1, 2), strides=1):
conv_x = keras.layers.Conv2D(
filters=filters, kernel_size=kernel_size, padding="same"
)(input_layer)
conv_x = keras.layers.Activation("relu")(conv_x)
conv_y = keras.layers.Conv2D(
filters=filters, kernel_size=kernel_size, padding="same"
)(conv_x)
conv_y = keras.layers.Activation("relu")(conv_y)
conv_z = keras.layers.Conv2D(
filters=filters, kernel_size=kernel_size, padding="same"
)(conv_y)
# expand channels for the sum
shortcut_y = keras.layers.Conv2D(
filters=filters, kernel_size=(1, 1), padding="same"
)(input_layer)
output_block = keras.layers.add([shortcut_y, conv_z])
output_block = keras.layers.Activation("relu")(output_block)
return output_block
def residual_blocks(input_layer, num_blocks=8):
x = input_layer
for block in range(num_blocks):
x = residual_block(x)
return x
def classifier_block(ecoder_results, num_cats):
conv_y = keras.layers.Conv2D(filters=num_cats, kernel_size=(1, 2), padding="same")(
ecoder_results
)
conv_y = keras.layers.Activation("softmax")(conv_y)
return conv_y
def dense_connection_block(ecoder_results, units=64):
return keras.layers.Dense(units=64)(ecoder_results)
def residual_cnn_w_dense(input_shape, num_categories=2):
inputs = tf.keras.layers.Input(shape=input_shape)
encoder = residual_blocks(inputs)
denseout = dense_connection_block(encoder)
outputs = classifier_block(denseout, num_categories)
model = tf.keras.Model(inputs=inputs, outputs=outputs, name="residual_cnn_w_dense")
return model
< /code>
Составьте модель для входных каналов 3 и 2 класса сегментации < /p>
num_time_series_channels = 3
model = residual_cnn_w_dense(
input_shape=(None, None, num_time_series_channels),
)
model.compile(
run_eagerly=True,
optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
loss=focal_loss,
metrics=dice_coef_multiclass,
)
< /code>
Создайте несколько входов во времени разных размеров с формой (партия, 1, время, функциональные каналы), где изменяется длина временных рядов. < /p>
data_input_0 = np.random.randn(12,1,32,3)
data_input_1 = np.random.randn(17,1,12,3)
< /code>
Запустите модель на каждом входе в разные формы < /p>
model(data_input_0).shape, model(data_input_1).shape
< /code>
Это работает и возвращает
(TensorShape([12, 1, 32, 2]), TensorShape([17, 1, 12, 2]))
Обучение модели также работает и не устраняет ошибку при изменении длины временных рядов.
Что здесь происходит? Почему я не получаю ошибки на плотном слое?
Я работаю над проблемой многоклассной сегментации динамических временных рядов с Keras (Tensorflow версия 2.12.0), и я хотел посмотреть, что произойдет, когда я упал в плотный слой в сетевую архитектуру. Мое ожидание состоит в том, что для любой ситуации, когда изменение размера ввода (например, динамические временные ряды) вам нужно будет включить какой -либо слой объединения, который будет поддерживать фиксированную форму ввода в плотный слой. Мне удалось получить его работу без каких -либо слоев объединения, и мне интересно, почему я не получаю ошибку на плотном уровне при передаче входов динамического размера в сеть.[code]def residual_block(input_layer, filters=64, kernel_size=(1, 2), strides=1): conv_x = keras.layers.Conv2D( filters=filters, kernel_size=kernel_size, padding="same" )(input_layer) conv_x = keras.layers.Activation("relu")(conv_x)
model = tf.keras.Model(inputs=inputs, outputs=outputs, name="residual_cnn_w_dense")
return model
< /code> Составьте модель для входных каналов 3 и 2 класса сегментации < /p> num_time_series_channels = 3
model = residual_cnn_w_dense( input_shape=(None, None, num_time_series_channels), )
model.compile( run_eagerly=True, optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss=focal_loss, metrics=dice_coef_multiclass, ) < /code> Создайте несколько входов во времени разных размеров с формой (партия, 1, время, функциональные каналы), где изменяется длина временных рядов. < /p> data_input_0 = np.random.randn(12,1,32,3) data_input_1 = np.random.randn(17,1,12,3) < /code> Запустите модель на каждом входе в разные формы < /p> model(data_input_0).shape, model(data_input_1).shape < /code> Это работает и возвращает (TensorShape([12, 1, 32, 2]), TensorShape([17, 1, 12, 2]))[/code] Обучение модели также работает и не устраняет ошибку при изменении длины временных рядов. Что здесь происходит? Почему я не получаю ошибки на плотном слое?
Я работаю над проблемой многоклассной сегментации динамических временных рядов с Keras (Tensorflow версия 2.12.0), и я хотел посмотреть, что произойдет, когда я упал в плотный слой в сетевую архитектуру. Мое ожидание состоит в том, что для любой...
Я работаю над проблемой многоклассной сегментации динамических временных рядов с Keras (Tensorflow версия 2.12.0), и я хотел посмотреть, что произойдет, когда я упал в плотный слой в сетевую архитектуру. Мое ожидание состоит в том, что для любой...
Я использую Emgu CV (OpenCV C# warper) и пытаюсь проецировать 3D -точки на 2D -плоскости изображения с помощью cvinvoke.projectpoints. Тем не менее, я получаю эту ошибку OpenCV:
OpenCV: d == 2 && (sizes == 1 || sizes == 1 || sizes *sizes == 0)
Я...
Я работаю над моделью классификации гистопатологических изображений рака молочной железы с использованием Kaggle. Набор данных состоит из 157 572 изображений (78 786 отрицательных IDC и 78 786 положительных IDC), каждое размером 50x50 пикселей.
Я...
У меня есть 1D CNN, которую я создал и обучил с помощью keras, и я сохранил веса в файле h5, а архитектуру — в файле json. Теперь я хотел бы иметь возможность читать архитектуру и веса и использовать их для создания новых прогнозов, независимо от...