第三者効果

三者効果

  • マスメディアがもたらす影響を他人事として考えること。すなわち、テレビや新聞などによって伝えられる説得的なメッセージによって多くの人は影響を受けると懸念する一方、それは自分以外の他者(第三者)においてのみ起こることで、自分だけはメディアに踊らされたりはしないと考える [1]。

  • メディアに騙される世間と、騙されない自分。

  • 他人(情弱)の知らないことを知っているという自負心。

[1] http://www.jumonji-u.ac.jp/sscs/ikeda/cognitive_bias/cate_s/s_12.html

動物化するポストモダン オタクから見た日本社会

動物化するポストモダン オタクから見た日本社会 (講談社現代新書) Kindle東浩紀 (著)

[メモ]

  • ポストモダンから見たオタク系文化と、オタク系文化から見たポストモダン

  • オリジナルとコピーの境界がなくなり、中間的なシミュラークルが氾濫。人類が共有する"大きな物語"の機能不全。そのとき、コンテンツはどのように生成されていくか。

  • 作品の要素への分解。データベースへの登録。共有された背景知識に対する差分を見る。

  • オタクの動物化

  • 本書で扱っているのは、~90年まで。ニコニコ動画: MAD, シミュラークルのさらなるマルチメディア化。- 声優: リアルな人格。これもデータベースの一要素に過ぎない?? <-> VTuber

  • スノビズム: 自分が現実に属しているよりも上の階級に属しているかのようにふるまう態度。知識・教養をひけらかす見栄張りの気取り屋、上位の者に取り入り下の者を見下す嫌味な人物。形式化された価値を重要視。snob【名】俗物、お高くとまった人。

  • ポストモダン- 社会全体のまとまりの弱体化。日本:高度経済成長期後。伝統に支えられた社会のとらえ方の変化。

error: aggregate ‘EVP_CIPHER_CTX ctx’ has incomplete type and cannot be defined

OpenSSL 1.1.0以降、EVP_CIPHER_CTXに関する文法が変更されている。

- 初期化

更新前 (1.0.0)
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx);

更新後 (1.1.0)
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(ctx);

- 後処理

更新前 (1.0.0)
EVP_CIPHER_CTX_cleanup(&ctx);

更新後 (1.1.0)
EVP_CIPHER_CTX_free(ctx);

(参考) - https://stackoverflow.com/questions/26345175/correct-way-to-free-allocate-the-context-in-the-openssl

install gcc-5.1.0

install gcc-5.1.0

0)

wget tar zxvf gcc-5.1.0.tar.gz cd gcc-5.1.0

./contrib/download_prerequisites

mkdir build

cd build

../configure --enable-languages=c,c++ --prefix=/path/to/gcc-5 --disable-bootstrap --disable-multilib

make -j

make install

1) cfns.gperf:101:1: error: ‘gnu_inline’ attribute present on ‘libc_name_p’

https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00375.html

https://unix.stackexchange.com/questions/335717/how-to-handle-error-compiling-gcc-4-7-0-using-gcc-6-2-1

https://patchwork.ozlabs.org/patch/504982/

2) ./md-unwind-support.h:65:47: error: dereferencing pointer to incomplete type 'struct ucontext'

https://stackoverflow.com/questions/46999900/how-to-compile-gcc-6-4-0-with-gcc-7-2-in-archlinux

https://github.com/easybuilders/easybuild-easyconfigs/issues/5758

3) libsanitizer/asan/asan_linux.cc:222:20: error: 'SIGSEGV' was not declared in this scope

https://patchwork.ozlabs.org/patch/725596/

中卒でもわかる科学入門

小飼 弾「中卒でもわかる科学入門」


- 原発:失敗と改善を繰り返せない。
- 私たちにあるのは自由意志ではなく自由不意思。次に読む本:池谷裕二「単純な脳、複雑な私」
https://freespeechact.files.wordpress.com/2016/03/seeing_as_things_as_they_are_private-trans-2.pdf

TorchScript. C++でpytorchを動かす

C++でpytorchを動かした際のメモ。

 

[pytorch]
- tracingとscriptingについて[2]。traceは、example dataを入力しそのときに実行された計算のみを記録する。ifやloopがある場合は、scriptを用いる。


- torch.nn.ModuleListにアクセスする際は、indexを指定できない。"for module in modules"で呼び出す。
https://github.com/pytorch/pytorch/issues/16123

上のURLに加え、modulelistを__constants__として登録しておく必要がある。

https://pytorch.org/docs/stable/jit.html#for-loops-over-constant-nn-modulelist

ネットワークが複雑な場合、上のURL必読。

 

- methodをコンパイルしたい場合には@torch.jit.export、したくない場合には@torch.jit.ignoreでデコレート。

 

- sub tensorにアクセスする際、torch.splitを用いてtuple of tensorsに変換しておく。逆の場合は、"var: List[torch.Tensor] = []"に対してappend & stack。

 

- TorchScriptの全体の流れ (複数入力に対する対処)

inputs_nt = namedtuple('input_nt', ['arg1', 'arg2'])

inputs = inputs_nt(arg1, arg2)

traced_module = torch.jit.trace_module(module, {"forward": tuple(inputs)})

traced_module.save("/path/to/save/traced/module");

https://github.com/pytorch/pytorch/issues/16453


[C++]

- tensor::Tensorの値は、coutで簡単に確認できる。

 

- (tensor::Tensor dataの)中のデータがポインタやvectorで欲しい場合は

float* ptr = data.data_ptr<float>();

CV系は門外漢(https://discuss.pytorch.org/t/libtorch-c-convert-a-tensor-to-cv-mat-single-channel/47701/2)。

 

- std::vector(v)からtensor::Tensor(t)へ
tensor::Tensor t = torch::from_blob(v.data(), {b /* batch size */, t /* seq len */}, at::kFloat).clone();

https://pytorch.org/cppdocs/notes/tensor_creation.html

https://discuss.pytorch.org/t/can-i-initialize-tensor-from-std-vector-in-libtorch/33236

https://discuss.pytorch.org/t/libtorch-how-to-transfer-data-from-tensor-to-vector-with-libtorch/49600

 

- pytorch側への入力が複数tensorの場合、以下のようにする。

std::vector<torch::jit::IValue> inputs;

inputs.push_back(input_tensor1);

inputs.push_back(input_tensor2);

torch::Tensor output = module->forward(inputs).toTensor();

https://github.com/pytorch/pytorch/issues/18337

 

- pytorch側が複数のtensorを返す場合、それぞれのtensorには以下のようにアクセス。

auto outputs = module->forward(inputs).toTuple();

torch::Tensor out1 = outputs->elements()[0].toTensor();

torch::Tensor out2 = outputs->elements()[1].toTensor();

 

- torch::Tensorとat::Tensorの違い

https://discuss.pytorch.org/t/difference-between-torch-tensor-and-at-tensor/35806

https://github.com/pytorch/pytorch/issues/13638


[その他]

- 保存したファイルをunzipすると、変換後のコードなど中身を確認できる。

 

[公式]

document of TorchScript

[1] https://pytorch.org/docs/stable/jit.html

TorchScriptのチュートリアル。pytorch codeと対応するtraced code。

[2] https://pytorch.org/tutorials/beginner/Intro_to_TorchScript_tutorial.html

pytorch codeをC++で実行する際の、全体の大雑把な流れ。

[3] https://brsoff.github.io/tutorials/advanced/cpp_export.html

PyTorch C++ API

[4] https://pytorch.org/cppdocs/

Custom C++ and CUDA Extensions

[5] https://pytorch.org/tutorials/advanced/cpp_extension.html

GPU

https://pytorch.org/cppdocs/notes/tensor_creation.html