Обучение сети, созданной с использованием tenorflow.keras.Model и функционального API keras, приводит к сбою Python - PullRequest
0 голосов
/ 29 января 2020

-Keras версия: 2.3.1 -Tensorflow версия: 2.2.0 -OS: Windows 10 -Running на: процессор ЦП Intel (R) Core (TM) i7-8850H -Разработан в: PyCharm - Python Версия: 3.7

Я несколько раз пытался обучить сеть, спроектированную с использованием функционального API-интерфейса keras, однако из-за обучения всегда python вызывает sh со следующим сообщением о выходе:

Process finished with exit code -1073740791 (0xC0000409)

Не предусмотрена другая трассировка стека. Ниже приведена упрощенная версия кода, который я пытаюсь запустить:

import scipy.io as io
import os
import numpy as np
from tensorflow.keras import layers, losses, Input
from tensorflow.keras.models import Model

directory = 'C:\\Dataset'

def simple_generator(dim1, dim2, dim3, batch_size=5):
    while True:
        samples = np.random.random_sample((batch_size, dim1, dim2, dim3))
        targets = np.random.random_sample((batch_size, 3))
        yield samples, targets

example_shape = (1100, 4096, 2)

train_gen = simple_generator(example_shape[0], example_shape[1], example_shape[2], batch_size=10)
val_gen = simple_generator(example_shape[0], example_shape[1], example_shape[2])
test_gen = simple_generator(example_shape[0], example_shape[1], example_shape[2])

input_tensor = Input(shape=example_shape)
preprocess = layers.Conv2D(32, 3, activation='relu')(input_tensor)
preprocess = layers.Conv2D(32, 3, activation='relu')(preprocess)
preprocess = layers.MaxPool2D(pool_size=(3, 3), strides=3)(preprocess)

"""   Head 1   """
head_1 = layers.Conv2D(32, 3, activation='relu')(preprocess)
head_1 = layers.Conv2D(32, 3, activation='relu')(head_1)
head_1 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_1)
head_1 = layers.Conv2D(32, 3, activation='relu')(head_1)
head_1 = layers.Conv2D(32, 3, activation='relu')(head_1)
head_1 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_1)
head_1 = layers.Conv2D(16, 3, activation='relu')(head_1)
head_1 = layers.Conv2D(16, 3, activation='relu')(head_1)
head_1 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_1)
head_1 = layers.Dense(8, activation='relu')(head_1)

"""   Head 2   """
head_2 = layers.Conv2D(32, 3, activation='relu')(preprocess)
head_2 = layers.Conv2D(32, 3, activation='relu')(head_2)
head_2 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_2)
head_2 = layers.Conv2D(32, 3, activation='relu')(head_2)
head_2 = layers.Conv2D(32, 3, activation='relu')(head_2)
head_2 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_2)
head_2 = layers.Conv2D(16, 3, activation='relu')(head_2)
head_2 = layers.Conv2D(16, 3, activation='relu')(head_2)
head_2 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_2)
head_2 = layers.Dense(8, activation='relu')(head_2)

"""   Head 3   """
head_3 = layers.Conv2D(32, 3, activation='relu')(preprocess)
head_3 = layers.Conv2D(32, 3, activation='relu')(head_3)
head_3 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_3)
head_3 = layers.Conv2D(32, 3, activation='relu')(head_3)
head_3 = layers.Conv2D(32, 3, activation='relu')(head_3)
head_3 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_3)
head_3 = layers.Conv2D(16, 3, activation='relu')(head_3)
head_3 = layers.Conv2D(16, 3, activation='relu')(head_3)
head_3 = layers.MaxPool2D(pool_size=(3, 3), strides=3)(head_3)
head_3 = layers.Dense(8, activation='relu')(head_3)

concat_out = layers.Concatenate(axis=-1)([head_1, head_2, head_3])
concat_out = layers.Flatten()(concat_out)
output_tensor = layers.Dense(3)(concat_out)
model = Model(input_tensor, output_tensor)

model.compile(loss=losses.mean_absolute_error, optimizer='sgd')
model.summary()

history = model.fit(x=train_gen, steps_per_epoch=25, epochs=12, validation_data=val_gen, validation_steps=10, verbose=True)
model.save(directory + '\\divergent_network.h5')
evaluations = model.evaluate_generator(generator=test_gen, steps=20, verbose=True)
print(evaluations)

Кто-нибудь может объяснить cra sh или предложить какие-либо потенциальные решения? Я запускаю этот код в среде Anaconda, однако я попытался запустить его в виртуальной среде basi c python, чтобы выяснить, не является ли это проблемой Anaconda, но я не увидел никакой разницы между ними.

1 Ответ

0 голосов
/ 06 февраля 2020

Кажется, это была проблема с моей средой conda. Я создал новую «минимальную» среду только с необходимыми пакетами, и все прояснилось. Информация, которую я использовал для этого, может быть найдена по адресу:

https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating -an-environment-with-command

https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...