почему инициализация слоев keras не работает - PullRequest
0 голосов
/ 05 февраля 2019

, когда я запускаю свою маленькую модель keras, я получаю эту ошибку

FailedPreconditionError: Попытка использовать неинициализированное значение bn6 / beta [[{{node bn6 / beta / read}} = IdentityT = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0 "]]

ошибка полной трассировки

код:

"input layer"
command_input = keras.layers.Input(shape=(1,1))
image_measurements_features = keras.layers.Input(shape=(1, 640))
"command module"
command_module_layer1=keras.layers.Dense(128,activation='relu')(command_input)
command_module_layer2=keras.layers.Dense(128,activation='relu')(command_module_layer1)
"concatenation layer"
j=keras.layers.concatenate([command_module_layer2,image_measurements_features])
"desicion module"
desicion_module_layer1=keras.layers.Dense(512,activation='relu')(j)
desicion_module_layer2=keras.layers.Dense(256,activation='relu')(desicion_module_layer1)
desicion_module_layer3=keras.layers.Dense(128,activation='relu')(desicion_module_layer2)
desicion_module_layer4=keras.layers.Dense(3,activation='relu')(desicion_module_layer3)
initt = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(initt)
big_hero_4=keras.models.Model(inputs=[command_input, image_measurements_features], outputs=desicion_module_layer4)
big_hero_4.compile(optimizer='adam',loss='mean_squared_error',metrics=['accuracy'])
"train the model"
historyy=big_hero_4.fit([x, y],z,batch_size=None, epochs=1,steps_per_epoch=1000)

есть ли у вас какие-либо решения для этой ошибки?Почему keras не инициализирует слои автоматически без использования инициализатора глобальных переменных (ошибка существует до и после добавления глобального инициализатора)

Ответы [ 2 ]

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

Я получил это на работу.Забудьте о сеансе при использовании керас, это только усложнит ситуацию.

import keras
import tensorflow as tf
import numpy as np

command_input = keras.layers.Input(shape=(1,1))
image_measurements_features = keras.layers.Input(shape=(1, 640))

command_module_layer1 = keras.layers.Dense(128 ,activation='relu')(command_input)
command_module_layer2 = keras.layers.Dense(128 ,activation='relu')(command_module_layer1)

j = keras.layers.concatenate([command_module_layer2, image_measurements_features])

desicion_module_layer1 = keras.layers.Dense(512,activation='relu')(j)
desicion_module_layer2 = keras.layers.Dense(256,activation='relu')(desicion_module_layer1)
desicion_module_layer3 = keras.layers.Dense(128,activation='relu')(desicion_module_layer2)
desicion_module_layer4 = keras.layers.Dense(3,activation='relu')(desicion_module_layer3)

big_hero_4 = keras.models.Model(inputs=[command_input, image_measurements_features], outputs=desicion_module_layer4)
big_hero_4.compile(optimizer='adam',loss='mean_squared_error',metrics=['accuracy'])

# Mock data
x = np.zeros((1, 1, 1))
y = np.zeros((1, 1, 640))
z = np.zeros((1, 1, 3))

historyy=big_hero_4.fit([x, y], z, batch_size=None, epochs=1,steps_per_epoch=1000)

Этот код должен начать обучение без проблем.Если у вас все еще есть та же ошибка, это может быть связано с какой-то другой частью вашего кода, если есть еще.

0 голосов
/ 05 февраля 2019

Вы инициализируете свою модель, а затем создаете и компилируете ее.Это неправильный порядок, сначала определите свою модель, скомпилируйте ее, а затем инициализируйте.Тот же код, только другой заказ

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