我该怎么办' for-loop'张量形状为(?,20)

时间:2017-07-16 07:44:02

标签: python tensorflow

我试图这样做:

for i in range(int(linear.get_shape()[0])):
    for j in range(int(linear.get_shape()[1])):
        if linear[i][j]<0.5 and linear[i][j]>-0.5:
            linear[i][j]==0

其中&#39;线性&#39;是:

Tensor("add:0", shape=(?, 20), dtype=float32)

我遇到此错误:

Traceback (most recent call last):
File "L1_01.py", line 52, in <module>
train_X_=model.fit_transform(train_X)[0]
File "/home/hjson/tmp/BRCA/libsdae/stacked_autoencoder.py", line 126, in fit_transform
self.fit(x)
File "/home/hjson/tmp/BRCA/libsdae/stacked_autoencoder.py", line 92, in fit
print_step=self.print_step, lambda_=self.lambda_, glscale=self.glscale)
File "/home/hjson/tmp/BRCA/libsdae/stacked_autoencoder.py", line 144, in run
tf.matmul(x, encode['weights']) + encode['biases'], activation)
File "/home/hjson/tmp/BRCA/libsdae/stacked_autoencoder.py", line 220, in activate
for i in range(int(linear.get_shape()[0])):
TypeError: __int__ returned non-int (type NoneType)

我该如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

这可以通过根据您想要的范围创建蒙版并将蒙版应用于原始矩阵来实现。因此,如果您的矩阵是X,则需要:

tf.cast(
    tf.logical_or(X >= 0.5, X <= -0.5),
    X.dtype
) * X