def layer_starting_weights(self): random_weights = np.append( np.random.normal(loc=0, scale=1, size=self.n_scaling_weights), np.random.uniform(high=4 * np.pi, size=self.n_rotation_weights + self.n_entangling_weights)) return random_weights
def successive_params(par1, par2): """Return a list of parameter configurations, successively walking from par1 to par2 coordinate-wise.""" par1_flat = np.fromiter(_flatten(par1), dtype=float) par2_flat = np.fromiter(_flatten(par2), dtype=float) walking_param = [] for i in range(len(par1_flat) + 1): walking_param.append(unflatten(np.append(par2_flat[:i], par1_flat[i:]), par1)) return walking_param
def gen_data(thresh): #thresh = 0.3 X = np.array([]) Y = np.array([]) ctr = 0 # num valid data pts maxval = 0.0 minval = 0.0 np.random.seed(0) while ctr < 40: x = np.random.rand(N) * 2 * np.pi for pair in itertools.combinations(range(N), r=2): x = np.append(x, (np.pi - x[pair[0]]) * (np.pi - x[pair[1]])) y = [] for i in range(N): y.append(data_label(x, i=i)) y_prod = reduce((lambda x, y: x * y), y) #print(y, y_prod) if (y_prod > maxval): maxval = y_prod print("new max separation: ", maxval) elif (y_prod < minval): minval = y_prod print("new min separation: ", minval) if y_prod > thresh: Y = np.append(Y, +1) X = np.append(X, x) ctr += 1 #print("+1") elif y_prod < -1 * thresh: Y = np.append(Y, -1) X = np.append(X, x) ctr += 1 #print("-1") X = X.reshape(-1, 3) print("Data: ", list(zip(X, Y))) return X, Y
def pad_data(data: np.ndarray, axis: int, padding: int) -> np.ndarray: """ Function pads 0 data to the end of the given axis. :param data: The data to pad 0 data to :param axis: Axis to pad on :param padding: How many elements to pad """ size = data.shape[0] if size == 0: return data.reshape((size, data.shape[axis] + padding)) return np.append(data, [[0] * padding for _ in range(size)], axis)
def layer_starting_weights(self): random_weights = np.append( np.random.normal(loc=0, scale=1, size=self.n_qubits), np.random.uniform(low=0, high=4 * np.pi, size=self.n_qubits)) return random_weights
def _feature_padding(self, features): res = features for i in range(self.n_repeats_per_layer-1): res = np.append(res, features) return np.append(res, np.zeros(self.padding_width))