我想从张量中提取单个值并在保留反向传播的同时对其进行操作。我当前的实现:
import keras
from keras import backend as K
from keras.models import Model
from keras.layers import Dense, Activation, Input
import tensorflow as tf
input = Input(shape=(100,1), dtype='float32')
x = Dense(100)(input)
x = Activation('relu')(x)
x = Dense(5)(x)
x = Activation('tanh')(x)
start_pad = 40.0 + 5.0 * x[0] # important line
# ...
zs = K.arange(0.0, 1000, step=1.0)
zs = K.relu( zs - start_pad )
# ...
out = zs # + ...
out = Reshape( (trace_length,1) )(out)
model = Model(inputs = input, outputs = out)
但是,start_pad
似乎是张量为x
的张量。上面的运行代码给出错误:
ValueError:尺寸必须相等,但输入形状为[1000],[100,5]的“ sub”(op:“ Sub”)的尺寸必须为1000和5。
其中start_pad
对象是<tf.Tensor 'add_1:0' shape=(100, 5) dtype=float32>
。
我想为start_pad
提供类似标量的值,并通过广播从zs
中减去。如何使用Tensorflow / Keras实现这一目标?
答案 0 :(得分:0)
好,我找到的解决方案是
x = tf.unstack(x, axis=1)
返回tf张量的列表