Как преобразовать объекты Tensor в массив Numpy? - PullRequest
0 голосов
/ 26 марта 2019

Я построил и обучил CNN, и я хочу получить wieghts первого плотного слоя в виде массива. после того, как я обучил модель, я загрузил модель, используя этот код

f = Path("model_structure.json")
model_structure = f.read_text()
model_wieghts = model_from_json(model_structure)
model_wieghts.load_weights("model_weights.h5")

чтобы получить весы первого плотного слоя, который я использовал:

wieghts_tf = model_wieghts.layers[9].output

wieghts_tf имеет это значение:

<tf.Tensor 'dense_1/Relu:0' shape=(?, 496) dtype=float32>

вопрос в том, что я хочу преобразовать тип wieghts_tf из тензорного в массив numpy. поэтому я создал сеанс и использовал функцию eval () для этого. как показано ниже:

sess = tf.Session()
with sess.as_default() :
    vector = wieghts_tf.eval()

но я получаю эту ошибку

InvalidArgumentError: You must feed a value for placeholder tensor 'conv2d_1_input' with dtype float and shape [?,180,180,3]

как я могу решить это?

вот код модели CNN:

#creating nueral network 

model = Sequential()
conv1_2d = model.add(Conv2D(180, (3, 3), padding='same', input_shape=(180, 180, 3), activation="relu")) #180 is the number of filters
conv2_2d = model.add(Conv2D(180, (3, 3), activation="relu"))
max_pool1 = model.add(MaxPooling2D(pool_size=(3, 3)))
drop_1 = model.add(Dropout(0.25))
conv3_2d =model.add(Conv2D(360, (3, 3), padding='same', activation="relu"))
conv4_2d =model.add(Conv2D(360, (3, 3), activation="relu"))
max_pool2 = model.add(MaxPooling2D(pool_size=(3, 3)))
drop_2 = model.add(Dropout(0.25))
flat = model.add(Flatten())
dense_1 = model.add(Dense(496, activation="relu"))
drop_3 = model.add(Dropout(0.5))
dense_2 = dense_layer = model.add(Dense(376, activation="softmax"))
model.compile(
    loss='categorical_crossentropy',
    optimizer='adam',
    metrics=['accuracy']
    )
model.fit(
    train_data,
    train_label,
    batch_size=32,
    epochs=40,
    verbose = 2 ,
    validation_split=0.1,
    shuffle=True)


# Save neural network structure

model_structure = model.to_json()

f = Path("model_structure.json")

f.write_text(model_structure)

# Save neural network's trained weights

model.save_weights("model_weights.h5")
...