本文整理汇总了C++中Scalar::toDouble方法的典型用法代码示例。如果您正苦于以下问题:C++ Scalar::toDouble方法的具体用法?C++ Scalar::toDouble怎么用?C++ Scalar::toDouble使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Scalar
的用法示例。
在下文中一共展示了Scalar::toDouble方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: zeros
TEST(TestScalar, TestScalar) {
manual_seed(123);
Scalar what = 257;
Scalar bar = 3.0;
Half h = bar.toHalf();
Scalar h2 = h;
cout << "H2: " << h2.toDouble() << " " << what.toFloat() << " "
<< bar.toDouble() << " " << what.isIntegral() << "\n";
Generator& gen = at::globalContext().defaultGenerator(at::kCPU);
ASSERT_NO_THROW(gen.seed());
auto&& C = at::globalContext();
if (at::hasCUDA()) {
auto t2 = zeros({4, 4}, at::kCUDA);
cout << &t2 << "\n";
}
auto t = ones({4, 4});
auto wha2 = zeros({4, 4}).add(t).sum();
ASSERT_EQ(wha2.item<double>(), 16.0);
ASSERT_EQ(t.sizes()[0], 4);
ASSERT_EQ(t.sizes()[1], 4);
ASSERT_EQ(t.strides()[0], 4);
ASSERT_EQ(t.strides()[1], 1);
TensorOptions options = dtype(kFloat);
Tensor x = randn({1, 10}, options);
Tensor prev_h = randn({1, 20}, options);
Tensor W_h = randn({20, 20}, options);
Tensor W_x = randn({20, 10}, options);
Tensor i2h = at::mm(W_x, x.t());
Tensor h2h = at::mm(W_h, prev_h.t());
Tensor next_h = i2h.add(h2h);
next_h = next_h.tanh();
ASSERT_ANY_THROW(Tensor{}.item());
test_overflow();
if (at::hasCUDA()) {
auto r = next_h.to(at::Device(kCUDA), kFloat, /*non_blocking=*/ false, /*copy=*/ true);
ASSERT_TRUE(r.to(at::Device(kCPU), kFloat, /*non_blocking=*/ false, /*copy=*/ true).equal(next_h));
}
ASSERT_NO_THROW(randn({10, 10, 2}, options));
// check Scalar.toTensor on Scalars backed by different data types
ASSERT_EQ(scalar_to_tensor(bar).scalar_type(), kDouble);
ASSERT_EQ(scalar_to_tensor(what).scalar_type(), kLong);
ASSERT_EQ(scalar_to_tensor(ones({}).item()).scalar_type(), kDouble);
if (x.scalar_type() != ScalarType::Half) {
AT_DISPATCH_ALL_TYPES(x.scalar_type(), "foo", [&] {
scalar_t s = 1;
std::stringstream ss;
ASSERT_NO_THROW(
ss << "hello, dispatch" << x.dispatch_type().toString() << s << "\n");
auto data = (scalar_t*)x.data_ptr();
(void)data;
});
}
// test direct C-scalar type conversions
{
auto x = ones({1, 2}, options);
ASSERT_ANY_THROW(x.item<float>());
}
auto float_one = ones({}, options);
ASSERT_EQ(float_one.item<float>(), 1);
ASSERT_EQ(float_one.item<int32_t>(), 1);
ASSERT_EQ(float_one.item<at::Half>(), 1);
}