def compileActivation(self, net, layerNum):
variable = net.x if layerNum == 0 else net.varArrayA[layerNum - 1]
#print tf.expand_dims(net.dropOutVectors[layerNum], 1)
#print net.varWeights[layerNum]['w'].get_shape().as_list()
z = tf.matmul((net.varWeights[layerNum]['w']), (variable * (tf.expand_dims(net.dropOutVectors[layerNum], 1) if self.dropout else 1.0))) + tf.expand_dims(net.varWeights[layerNum]['b'], 1)
a = self.activation(z, self.pool_size)
net.varArrayA.append(a)
Я бегу функцию активации, которая вычисляет z
и передает его в активации сигмовидной. Когда я пытаюсь выполнить вышеуказанную функцию, я получаю следующее сообщение об ошибке:TensorFlow ошибка: TensorShape() должны иметь одинаковый ранг
ValueError: Shapes TensorShape([Dimension(-2)]) and TensorShape([Dimension(None), Dimension(None)]) must have the same rank
Theano эквивалент для вычисления z
работает просто отлично:
z = T.dot(net.varWeights[layerNum]['w'], variable * (net.dropOutVectors[layerNum].dimshuffle(0, 'x') if self.dropout else 1.0)) + net.varWeights[layerNum]['b'].dimshuffle(0, 'x')
Этот код выглядит синтаксически правильным, но кажется, что какой-то объект в 'net' имеет коррумпированную форму. В частности, 'TensorShape ([Dimension (-2)]) никогда не должно происходить, и это тестируется в TensorFlow 0.7.0, поэтому при обновлении вы можете получить более полезное сообщение об ошибке. – mrry
Спасибо. Я попробую обновить –