Shi*_*r K 9 python keras tensorflow
我的模型是在数字图像 ( MNIST dataset)上训练的。我正在尝试打印网络第二层的输出 - 一个 128 个数字的数组。
我没有设法在我自己的网络上做到这一点。两种解决方案都不适用于我自己的算法。
Colab 链接:https ://colab.research.google.com/drive/1MLbpWJmq8JZB4_zKongaHP2o3M1FpvAv ? fbclid = IwAR20xRz2i6sFS-Nm6Xwfk5hztdXOuxY4tZaDRXxAx3b986TgA
我收到了很多不同的错误消息。我试图处理它们中的每一个,但无法自己解决。
我错过了什么?如何输出第二层?
如果我的 Shape 是(28,28)- 的类型和值应该是什么input_shape?
失败的试验和错误,例如:
(1)
for layer in model.layers:
get_2nd_layer_output = K.function([model.layers[0].input],[model.layers[2].output])
layer_output = get_2nd_layer_output(layer)[0]
print('\nlayer output: get_2nd_layer_output=, layer=', layer, '\nlayer output: get_2nd_layer_output=', get_2nd_layer_output)
Run Code Online (Sandbox Code Playgroud)
类型错误:输入应该是列表或元组。
(2)
input_shape=(28, 28)
inp = model.input # input placeholder
outputs = [layer.output for layer in model.layers] # all layer outputs
functor = K.function([inp, K.learning_phase()], outputs ) # evaluation function
# Testing
test = np.random.random(input_shape)[np.newaxis,...]
layer_outs = functor([test, 0.])
print('layer_outs',layer_outs)
Run Code Online (Sandbox Code Playgroud)
tensorflow.python.framework.errors_impl.FailedPreconditionError:从容器读取资源变量dense_1/bias时出错:本地主机。这可能意味着该变量未初始化。未找到:容器 localhost 不存在。(找不到资源:localhost/dense_1/bias)[[{{nodedense_1/BiasAdd/ReadVariableOp}}]]
看起来你正在混合旧的 keras (tensorflow 2.0: 之前import keras) 和新的 keras ( from tensorflow import keras)。
尽量不要将旧的 keras 与 tensorflow>=2.0 一起使用(并且不要像第一个链接中那样参考旧文档),因为它很容易与新文档混淆(尽管没有什么严格不合逻辑的):
from tensorflow import keras
from keras.models import Model
print(Model.__module__) #outputs 'keras.engine.training'
from tensorflow.keras.models import Model
print(Model.__module__) #outputs 'tensorflow.python.keras.engine.training'
Run Code Online (Sandbox Code Playgroud)
混合这两个库的行为将非常不稳定。
完成此操作后,使用您尝试过的答案,m 是您的模型,并且my_input_shape是模型输入的形状,即一张图片的形状(此处为 (28, 28) 或 (1, 28, 28),如果您有批次):
from tensorflow import keras as K
my_input_data = np.random.rand(*my_input_shape)
new_temp_model = K.Model(m.input, m.layers[3].output) #replace 3 with index of desired layer
output_of_3rd_layer = new_temp_model.predict(my_input_data) #this is what you want
Run Code Online (Sandbox Code Playgroud)
如果你有一张图片,img可以直接写new_temp_model.predict(img)
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |