gpt4 book ai didi

python - 如何使用 Keras 获得第 k 层之后的激活值?

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:51 25 4
gpt4 key购买 nike

注意:我已经阅读了keras forward pass with tensorflow variable as input但这没有帮助。

我正在使用 Keras 和 MNIST 数据库训练自动编码器无监督神经网络:

import keras, cv2
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(60000, 784).astype('float32') / 255.0
x_test = x_test.reshape(10000, 784).astype('float32') / 255.0

model = Sequential()
model.add(Dense(100, activation='sigmoid', input_shape=(784,)))
model.add(Dense(10, activation='sigmoid'))
model.add(Dense(100, activation='sigmoid'))
model.add(Dense(784, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer='sgd')
history = model.fit(x_train, x_train, batch_size=1, epochs=1, verbose=0)

然后当输入向量是x_test[i]时,我想得到输出向量:

for i in range(100):
x = x_test[i]
a = model(x)
cv2.imshow('img', a.reshape(28,28))
cv2.waitKey(0)

但是我得到这个错误:

All inputs to the layer should be tensors.

我应该如何修改此代码以对神经网络中的输入向量进行前向传递,并获得一个向量作为返回?

还有如何在第 2 层之后激活,即直到最后一层才传播,但在第 2 层之后获得输出。
示例:输入:大小为 784 的向量,输出:大小为 10 的向量

最佳答案

要在完成训练后运行模型,您需要使用 keras predict() .这将根据您的输入数据评估图形。请注意,输入数据必须与指定模型输入的维度相同,在您的情况下看起来是 [None, 784]。 Keras 不要求您指定批处理维度,但您仍然需要一个二维数组。做一些类似的事情..

x = x_test[5]
x = x[numpy.newaxis,:]
out_val = model.predict(x)[0]

如果您只想处理单个值。

需要 numpy.newaxis 来制作二维数组,从而匹配您的输入大小。如果您传入一个值数组以一次评估所有值,则可以跳过此步骤。

使用 Keras/Tensorflow,您的模型是一个图形/函数,而不是标准的 Python 程序代码。你不能直接用数据调用它。您需要创建函数,然后调用函数。要从中间层获取输出,您可以执行类似...

OutFunc = K.function([model.input], [model.layers[2].output])
out_val = OutFunc([x])[0]

再次请记住,输入有一个批量维度,将在输出中生成。如果您需要一些额外的例子,有很多关于从中间层获取数据的帖子。例如参见 Keras, How to get the output of each layer?

关于python - 如何使用 Keras 获得第 k 层之后的激活值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53346869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com