Skip to content

Commit

Permalink
formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
zaqqwerty committed May 2, 2020
1 parent 4dd711d commit 23826ef
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 44 deletions.
8 changes: 4 additions & 4 deletions tensorflow_quantum/core/ops/parse_context.cc
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ Status GetGradients(OpKernelContext* context,

tensorflow::Status GetNumSamples(
tensorflow::OpKernelContext* context,
std::vector<std::vector<int>>* parsed_num_samples) {
std::vector<std::vector<unsigned int>>* parsed_num_samples) {
const Tensor* input_num_samples;
Status status = context->input("num_samples", &input_num_samples);
if (!status.ok()) {
Expand All @@ -270,13 +270,13 @@ tensorflow::Status GetNumSamples(
input_num_samples->dims(), "."));
}

const auto matrix_num_samples = input_num_samples->matrix<int>();
const auto matrix_num_samples = input_num_samples->matrix<uint32>();
parsed_num_samples->reserve(matrix_num_samples.dimension(0));
for (unsigned int i = 0; i < matrix_num_samples.dimension(0); i++) {
std::vector<int> sub_parsed_num_samples;
std::vector<unsigned int> sub_parsed_num_samples;
sub_parsed_num_samples.reserve(matrix_num_samples.dimension(1));
for (unsigned int j = 0; j < matrix_num_samples.dimension(1); j++) {
const int num_samples = matrix_num_samples(i, j);
const unsigned int num_samples = matrix_num_samples(i, j);
sub_parsed_num_samples.push_back(num_samples);
}
parsed_num_samples->push_back(sub_parsed_num_samples);
Expand Down
2 changes: 1 addition & 1 deletion tensorflow_quantum/core/ops/parse_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ tensorflow::Status GetGradients(tensorflow::OpKernelContext* context,
// Parses the number of samples from the 'num_samples' input tensor.
tensorflow::Status GetNumSamples(
tensorflow::OpKernelContext* context,
std::vector<std::vector<int>>* parsed_num_samples);
std::vector<std::vector<unsigned int>>* parsed_num_samples);

} // namespace tfq

Expand Down
37 changes: 13 additions & 24 deletions tensorflow_quantum/core/ops/tfq_simulate_ops_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -451,52 +451,47 @@ def test_simulate_sampled_expectation_inputs(self):
for resolver in resolver_batch])

pauli_sums = util.random_pauli_sums(qubits, 3, batch_size)
num_samples = [[10]]*batch_size
num_samples = [[10]] * batch_size

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'programs must be rank 1'):
# Circuit tensor has too many dimensions.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor([circuit_batch]), symbol_names,
symbol_values_array,
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'symbol_names must be rank 1.'):
# symbol_names tensor has too many dimensions.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor(circuit_batch), np.array([symbol_names]),
symbol_values_array,
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'symbol_values must be rank 2.'):
# symbol_values_array tensor has too many dimensions.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor(circuit_batch), symbol_names,
np.array([symbol_values_array]),
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'symbol_values must be rank 2.'):
# symbol_values_array tensor has too few dimensions.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor(circuit_batch), symbol_names,
symbol_values_array[0],
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'pauli_sums must be rank 2.'):
# pauli_sums tensor has too few dimensions.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor(circuit_batch), symbol_names,
symbol_values_array,
util.convert_to_tensor([x for x in pauli_sums]),
num_samples)
util.convert_to_tensor([x for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'pauli_sums must be rank 2.'):
Expand Down Expand Up @@ -530,17 +525,15 @@ def test_simulate_sampled_expectation_inputs(self):
# circuit tensor has the right type but invalid values.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
['junk'] * batch_size, symbol_names, symbol_values_array,
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'Could not find symbol in parameter map'):
# symbol_names tensor has the right type but invalid values.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor(circuit_batch), ['junk'],
symbol_values_array,
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.InvalidArgumentError,
'qubits not found in circuit'):
Expand All @@ -564,24 +557,21 @@ def test_simulate_sampled_expectation_inputs(self):
# circuits tensor has the wrong type.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
[1.0] * batch_size, symbol_names, symbol_values_array,
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(TypeError, 'Cannot convert'):
# symbol_names tensor has the wrong type.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor(circuit_batch), [0.1234],
symbol_values_array,
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(tf.errors.UnimplementedError, ''):
# symbol_values tensor has the wrong type.
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor(circuit_batch), symbol_names,
[['junk']] * batch_size,
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)

with self.assertRaisesRegex(TypeError, 'Cannot convert'):
# pauli_sums tensor has the wrong type.
Expand Down Expand Up @@ -611,8 +601,7 @@ def test_simulate_sampled_expectation_inputs(self):
tfq_simulate_ops.tfq_simulate_sampled_expectation(
util.convert_to_tensor([cirq.Circuit()]), symbol_names,
symbol_values_array.astype(np.float64),
util.convert_to_tensor([[x] for x in pauli_sums]),
num_samples)
util.convert_to_tensor([[x] for x in pauli_sums]), num_samples)


class InputTypesTest(tf.test.TestCase, parameterized.TestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel {
programs.size(), " circuits and ", pauli_sums.size(),
" paulisums.")));

std::vector<std::vector<int>> num_samples;
std::vector<std::vector<unsigned int>> num_samples;
OP_REQUIRES_OK(context, GetNumSamples(context, &num_samples));

OP_REQUIRES(context, num_samples.size() == pauli_sums.size(),
Expand All @@ -88,11 +88,12 @@ class TfqSimulateSampledExpectationOp : public tensorflow::OpKernel {
"Got ", num_samples.size(), " lists of sample sizes and ",
pauli_sums.size(), " lists of pauli sums.")));

OP_REQUIRES(context, num_samples[0].size() == pauli_sums[0].size(),
tensorflow::errors::InvalidArgument(absl::StrCat(
"Dimension 1 of num_samples and pauli_sums do not match.",
"Got ", num_samples[0].size(), " lists of sample sizes and ",
pauli_sums[0].size(), " lists of pauli sums.")));
OP_REQUIRES(
context, num_samples[0].size() == pauli_sums[0].size(),
tensorflow::errors::InvalidArgument(absl::StrCat(
"Dimension 1 of num_samples and pauli_sums do not match.", "Got ",
num_samples[0].size(), " lists of sample sizes and ",
pauli_sums[0].size(), " lists of pauli sums.")));

auto DoWork = [&](int start, int end) {
int old_batch_index = -2;
Expand Down Expand Up @@ -172,7 +173,7 @@ REGISTER_OP("TfqSimulateSampledExpectation")
.Input("symbol_names: string")
.Input("symbol_values: float")
.Input("pauli_sums: string")
.Input("num_samples: int")
.Input("num_samples: uint32")
.Output("expectations: float")
.SetShapeFn([](tensorflow::shape_inference::InferenceContext *c) {
tensorflow::shape_inference::ShapeHandle programs_shape;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,6 @@ def call(self,

symbol_values = tf.tile(tf.expand_dims(self._w, axis=0),
tf.stack([circuit_batch_dim, 1]))

return self._expectation_op(inputs, symbol_names, symbol_values,
operators, repetitions)
Original file line number Diff line number Diff line change
Expand Up @@ -112,33 +112,34 @@ def test_sampled_expectation_op_error(self):
symb_circuit = cirq.Circuit(cirq.H(bit)**symbol)
reg_circuit = cirq.Circuit(cirq.H(bit))

with self.assertRaisesRegex(Exception,
expected_regex="pauli_sums"):
with self.assertRaisesRegex(Exception, expected_regex="pauli_sums"):
# Operators has wrong rank. Parse error.
sampled_expectation.SampledExpectation()(
[reg_circuit],
operators=util.convert_to_tensor([test_psum]),
repetitions=1)

with self.assertRaisesRegex(
Exception, expected_regex="symbol_values"):
with self.assertRaisesRegex(Exception, expected_regex="symbol_values"):
# symbol_values has wrong rank.
sampled_expectation.SampledExpectation()([symb_circuit],
symbol_names=[symbol],
symbol_values=[0.5],
operators=test_psum,
repetitions=1)

with self.assertRaisesRegex(Exception,
expected_regex="Number of circuits and PauliSums do not match"):
with self.assertRaisesRegex(
Exception,
expected_regex="Number of circuits and PauliSums do not match"):
# Wrong batch size for pauli operators.
sampled_expectation.SampledExpectation()(symb_circuit,
symbol_names=[symbol],
operators=[[test_psum],
[test_psum]],
repetitions=1)

with self.assertRaisesRegex(Exception, expected_regex="Number of circuits and PauliSums do not match"):
with self.assertRaisesRegex(
Exception,
expected_regex="Number of circuits and PauliSums do not match"):
# Wrong batch size for pauli operators.
sampled_expectation.SampledExpectation()(reg_circuit,
operators=[[test_psum],
Expand Down

0 comments on commit 23826ef

Please sign in to comment.