(
self, num, feed_weight, use_inv_var_parameterization, use_log_barrier,
enable_diagnose, gc, dc
)
| 2123 | ) |
| 2124 | @settings(deadline=1000) |
| 2125 | def testAdaptiveWeight( |
| 2126 | self, num, feed_weight, use_inv_var_parameterization, use_log_barrier, |
| 2127 | enable_diagnose, gc, dc |
| 2128 | ): |
| 2129 | input_record = self.new_record(schema.RawTuple(num)) |
| 2130 | data = np.random.random(num) |
| 2131 | schema.FeedRecord( |
| 2132 | input_record, [np.array(x).astype(np.float32) for x in data] |
| 2133 | ) |
| 2134 | weights = np.random.random(num) if feed_weight else None |
| 2135 | result = self.model.AdaptiveWeight( |
| 2136 | input_record, |
| 2137 | weights=weights, |
| 2138 | estimation_method=( |
| 2139 | 'inv_var' if use_inv_var_parameterization else 'log_std' |
| 2140 | ), |
| 2141 | pos_optim_method=( |
| 2142 | 'log_barrier' if use_log_barrier else 'pos_grad_proj' |
| 2143 | ), |
| 2144 | enable_diagnose=enable_diagnose |
| 2145 | ) |
| 2146 | train_init_net, train_net = self.get_training_nets(True) |
| 2147 | workspace.RunNetOnce(train_init_net) |
| 2148 | workspace.RunNetOnce(train_net) |
| 2149 | result = workspace.FetchBlob(result()) |
| 2150 | if not feed_weight: |
| 2151 | weights = np.array([1. / num for _ in range(num)]) |
| 2152 | expected = np.sum(weights * data + 0.5 * np.log(1. / 2. / weights)) |
| 2153 | npt.assert_allclose(expected, result, atol=1e-4, rtol=1e-4) |
| 2154 | if enable_diagnose: |
| 2155 | assert len(self.model.ad_hoc_plot_blobs) == num |
| 2156 | reconst_weights_from_ad_hoc = np.array( |
| 2157 | [workspace.FetchBlob(b) for b in self.model.ad_hoc_plot_blobs] |
| 2158 | ).flatten() |
| 2159 | npt.assert_allclose( |
| 2160 | reconst_weights_from_ad_hoc, weights, atol=1e-4, rtol=1e-4 |
| 2161 | ) |
| 2162 | else: |
| 2163 | assert len(self.model.ad_hoc_plot_blobs) == 0 |
| 2164 | |
| 2165 | @given(num=st.integers(min_value=10, max_value=100), **hu.gcs) |
| 2166 | def testConstantWeight(self, num, gc, dc): |
nothing calls this directly
no test coverage detected