Tensorflow 如何从Keras模型的张量中获得激活值?

Tensorflow 如何从Keras模型的张量中获得激活值?,tensorflow,keras,tensorflow2.0,Tensorflow,Keras,Tensorflow2.0,我试图从层中的节点访问激活值 l0_out = model.layers[0].output print(l0_out) print(type(l0_out)) 尝试使用K.function并将一批train_x注入函数 from keras import backend as K get_relu_output = K.function([model.layers[0].input], [model.layers[0].output]) relu_output = get_relu_ou

我试图从层中的节点访问激活值

l0_out = model.layers[0].output

print(l0_out)
print(type(l0_out))

尝试使用
K.function
并将一批
train_x
注入函数

from keras import backend as K

get_relu_output = K.function([model.layers[0].input], [model.layers[0].output])
relu_output = get_relu_output([train_x])

那么,您的输入是什么?如果您犯了我们不知道的错误,您必须向我们展示您尝试过的所有内容。您可以将(10,4)数据输入此函数。@HashRocketSyntax您必须制作一个示例来说明问题,您所说的毫无意义,批处理维度不应该更改。这很尴尬,我看着
train_x
的形状,同时预测
test_x
,想知道为什么我的值比预期的要多。
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam

iris_data = load_iris()

x = iris_data.data
y_ = iris_data.target.reshape(-1, 1)

encoder = OneHotEncoder(sparse=False)
y = encoder.fit_transform(y_)

train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=0.20)


model = Sequential()
model.add(Dense(10, input_shape=(4,), activation='relu', name='fc1'))
model.add(Dense(10, activation='relu', name='fc2'))
model.add(Dense(3, activation='softmax', name='output'))

model.compile(optimizer=Adam(lr=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

print(model.summary())

# Train
model.fit(train_x, train_y, verbose=2, batch_size=5, epochs=200)
from keras import backend as K

get_relu_output = K.function([model.layers[0].input], [model.layers[0].output])
relu_output = get_relu_output([train_x])