SuprSonicJetBoy's blog

いろいろです。

Perl で selenium を使う

Perl から selenium を使う場面があったので、インストールと簡単な使い方。

環境

selenium のインストー

サクッとcpanm で。

$ sudo cpanm Selenium::Remote::Driver

webdriver のインストー

Chromeを使いたいので、Chrome のドライバーを homebrew で入れます。

$ brew install chromedriver

起動

Selenium::Chrome を使えば、selenium-server-standalone がなくても動きます。

$ perl
use Selenium::Chrome;
my $driver = Selenium::Chrome->new;
$driver->get('http://www.google.com');
print $driver->get_title();
$driver->shutdown_binary();
__END__

Google

UIBarButtonItem の width と X座標を取得する

UIBarButtonItem の width とX座標が欲しくて、色々試行錯誤していたのですが、結局取れないことがわかりました。
なぜ、UIBarButtonItem の横幅と位置が欲しかったかということ、こういうことがしたかったから。

f:id:suprsonicjetboy:20170609145137p:plain 左のホームアイコンの下にあるラインのように、UIBarButtonItem と同じ幅のラインを引きたかったのです。

もくじ

結論

UIBarButtonItem の横幅は取れない、というよりも、明示的に指定しない限り、0になってしまいます。
0でも問題ないのは、タイトルでも画像でも、上手いことサイズを自動的に設定してくれるからです。
(0だと自動調整のようです)

仮に値を指定すると、値は設定できます。
しかし、X座標は取得できません。

では、どうするかというと、自分で UIButton を作り、サイズを決め、UIBarButtonItem.customView に渡してやります。

私は StoryBoard を使う派なので、Navigation BarBar Button Item を設置して、それをカスタムしていきます。

import UIKit

class viewController: UIViewController {
    @IBOutlet weak var leftItem: UIBarButtonItem!
    @IBOutlet weak var rightItem: UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()


         print(self.leftItem.width)
        // 0

        print(self.rightItem.width)
        // 0


        let leftButton: UIButton = UIButton()
        leftButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
        leftButton.setImage(UIImage(named: "home"), for: .normal)

        self.leftItem.customView = leftButton


        let rightButton: UIButton = UIButton()
        rightButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
        rightButton.setImage(UIImage(named: "picture"), for: .normal)

        self.rightItem.customView = rightButton



        if let a: UIButton = self.leftItem.customView as? UIButton {
            print(a.frame)
            // (20.0, 7.0, 30.0, 30.0)
        }

        if let a: UIButton = self.rightItem.customView as? UIButton {
            print(a.frame)
            // (364.0, 7.0, 30.0, 30.0)
        }
    }

}

CGRect(x: 0, y: 0, width: 30, height: 30) で作っていますが、customView に渡すとX座標、Y座標は自動的に算出されます。
これで、UIBarButtonItem でも横幅、X座標を取得することができました!
ついでに、高さとY座標も。

Y座標の値が 7 なのは、UINavigationBarの高さ44 の中で、高さ30のUIButton が垂直方向に中央になるように調整されているようです。

初期のサイズはどうするのか

ここで気になるのが customView に渡す UIButton のサイズです。
UIBarButtonItem が自動的に調整されるのであれば、UIButton もなるべく自動的に調整された時のサイズに合わせて作りたくなります。
そうしないと、ページによってサイズが変わってしまい、見た目的にあまりよくありません。
(30だと、通常のUIBarButtonItemよりも小さくなってしまいました)

かといって、すべての UIBarButtonItem の customView を、同じように設定してサイズを固定するのは正直面倒。
なので、UIBarButtonItem のサイズに合うように、各所注意して調整して見ました。

アイコン自体のサイズを揃える

当たり前ですが、アイコンのサイズを揃えます。
Human Interface Guideline に合わせておくと、UIButton のサイズを間違えなければ自ずと画像サイズは揃うはずです。

Navigation bar and toolbar icon size
Recommended 75px × 75px (25pt × 25pt @3x)
50px × 50px (25pt × 25pt @2x)
Maximum 83px × 83px (27.67pt × 27.67pt @3x)
56px × 56px (28pt × 28pt @2x)

高さは44固定

上記コードでは、30を設定していましたが、UINavigationBar が 44 なので、高さ目一杯のを44の固定にします。
また、デフォルトの UIBarButtonItem のタップ反応の領域が、UINavigationBar 分あるのでそれも理由です。
UIBarButtonItem.width があって、UIBarButtonItem.height がないのは、恐らくそういうことだと思います。
(実際にはUIBarButtonItemの上にあるステータスバー部分を触れても反応していますが…)

完成

比較するとこんな感じです。 f:id:suprsonicjetboy:20170609172757p:plain 青い方がデフォルトの UIBarButtonItem で、右の黒い方が customView を使ったものです。
ほんの少しずれていますが、気にならないレベルです。

サイズ、座標がとれ、UIBarButtonItem と同じように表現することができました。

UINavigationBar の UINavigationItem のタイトルと画像を切り替える

よくある、UINavigationBar の UINavigationItem のタイトルと画像を切り替える方法のメモ。
UIImageView を配置して、表示・非表示の切り替えを無理矢理やっていましたが、普通にできました…

import UIKit

class viewController: UIViewController {

    @IBOutlet weak var navItem: UINavigationItem!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.setLogo()
        // self.setTitle(title: "Title")
    }


    /**
      Set the logo image
    */
   func setLogo() {
        if let image: UIImage = UIImage(named: "logo") {
            let logoImageView: UIImageView = UIImageView(image: image)
            self.navItem.titleView = logoImageView
        }
    }


    /**
      Set the title
    */
   func setTitle(title: String) {
        self.navItem.titleView = nil
        self.navItem.title = title
    }

}

適当なタイミングで呼び出します。
UINavigationItem に titleView を設定した後、普通の title に戻したい場合は、titleView に nil を渡します。
特に難しいことはなく、知っておくべきことでした…

CakePHP3をさくらのレンサバにインストールする

さくらのレンタルサーバーで、今まではCakePHP2を問題なく使えていたのですが、CakePHP3になってからは使うことができなくなってしまいました。

CakePHP3からintlモジュールが必要となり、これがさくらのレンサバには入っておらず、CakePHP3を使うことができなくなりました。
(ゴニョればintlをインストールできるようですが…)

CakePHPの2系を使えばいいのですが、そろそろ3系も触っておきたいなと思い、試しにインストールできるかやってみました。

* この記事は、こちらの内容を踏襲していますので、先に一読頂くといいと思います。
CakePHP3 を intl 拡張モジュールなしでインストールする - Qiita

目次

インストールまでの流れ

CakePHP3からは、composer でのインストールが推奨されているので、まずは composer のインストールから始めます。
次に、composer を使って、CakePHP3 のインストール。
CakePHPプラグイン intlless を使用して、intl が無くても CakePHP3 が動くようにする。

と、こんな感じです。

composer をインストー

さくらのレンサバ(スタンダード)でもSSH接続できますので、接続してから composer をインストールします。

$ ssh -p 22 USER@USER.sakura.ne.jp
Welcome to FreeBSD!

% pwd
/home/USER

% echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/USER/bin

% mkdir bin

% curl -sS https://getcomposer.org/installer | php -- --install-dir=bin --filename=composer
All settings correct for using Composer
Downloading...

Composer (version 1.4.2) successfully installed to: /home/USER/bin/composer
Use it: php bin/composer

% composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.4.2 2017-05-17 08:17:52

無事、composerはインストールできました。

composer の設定

composerを使ってインストールするのですが、intlがないのでインストールでこけます。
なので、composerにあたかもintlが入っているかのように設定を行います。

% composer config --global platform.ext-intl 0.0.0

この platform というのは、PHP拡張機能のバージョンを偽装することができます。

CakePHP3をインストー

実際にインストールしてみます。

% composer create-project --prefer-dist cakephp/app test/app
Installing cakephp/app (3.4.2)
  - Installing cakephp/app (3.4.2): Loading from cache
Created project in test/app
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 35 installs, 0 updates, 0 removals
  - Installing cakephp/plugin-installer (1.0.0): Downloading (100%)
  - Installing psr/http-message (1.0.1): Downloading (100%)
  - Installing zendframework/zend-diactoros (1.4.0): Downloading (100%)
  - Installing aura/intl (3.0.0): Downloading (100%)
  - Installing mobiledetect/mobiledetectlib (2.8.25): Downloading (100%)
  - Installing psr/log (1.0.2): Downloading (100%)
  - Installing cakephp/chronos (1.1.2): Downloading (100%)
  - Installing cakephp/cakephp (3.4.7): Downloading (100%)
  - Installing symfony/yaml (v3.3.0): Downloading (100%)
  - Installing symfony/debug (v3.3.0): Downloading (100%)
  - Installing symfony/polyfill-mbstring (v1.3.0): Downloading (100%)
  - Installing symfony/console (v3.3.0): Downloading (100%)
  - Installing symfony/filesystem (v3.3.0): Downloading (100%)
  - Installing symfony/config (v3.3.0): Downloading (100%)
  - Installing robmorgan/phinx (v0.6.5): Downloading (100%)
  - Installing cakephp/migrations (1.6.7): Downloading (100%)
  - Installing jakub-onderka/php-console-color (0.1): Downloading (100%)
  - Installing jakub-onderka/php-console-highlighter (v0.3.2): Downloading (100%)
  - Installing dnoegel/php-xdg-base-dir (0.1): Downloading (100%)
  - Installing nikic/php-parser (v3.0.5): Downloading (100%)
  - Installing symfony/var-dumper (v3.3.0): Downloading (100%)
  - Installing psy/psysh (v0.8.5): Downloading (100%)
  - Installing jdorn/sql-formatter (v1.2.17): Downloading (100%)
  - Installing symfony/process (v3.3.0): Downloading (100%)
  - Installing symfony/finder (v3.3.0): Downloading (100%)
  - Installing seld/phar-utils (1.0.1): Downloading (100%)
  - Installing seld/jsonlint (1.6.0): Downloading (100%)
  - Installing seld/cli-prompt (1.0.3): Downloading (100%)
  - Installing justinrainbow/json-schema (5.2.1): Downloading (100%)
  - Installing composer/spdx-licenses (1.1.6): Downloading (100%)
  - Installing composer/semver (1.4.2): Downloading (100%)
  - Installing composer/ca-bundle (1.0.7): Downloading (100%)
  - Installing composer/composer (1.4.2): Downloading (100%)
  - Installing cakephp/debug_kit (3.10.2): Downloading (100%)
  - Installing cakephp/bake (1.3.4): Downloading (100%)
cakephp/app suggests installing markstory/asset_compress (An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.)
cakephp/app suggests installing dereuromark/cakephp-ide-helper (After baking your code, this keeps your annotations in sync with the code evolving from there on for maximum IDE and PHPStan compatibility.)
cakephp/app suggests installing phpunit/phpunit (Allows automated tests to be run without system-wide install.)
cakephp/app suggests installing cakephp/cakephp-codesniffer (Allows to check the code against the coding standards used in CakePHP.)
cakephp/cakephp suggests installing lib-ICU (The intl PHP library, to use Text::transliterate() or Text::slug())
symfony/console suggests installing symfony/event-dispatcher ()
symfony/var-dumper suggests installing ext-symfony_debug ()
psy/psysh suggests installing ext-pcntl (Enabling the PCNTL extension makes PsySH a lot happier :))
psy/psysh suggests installing ext-readline (Enables support for arrow-key history navigation, and showing and manipulating command history.)
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
psy/psysh suggests installing hoa/console (A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit.)
cakephp/debug_kit suggests installing ext-sqlite (DebugKit needs to store panel data in a database. SQLite is simple and easy to use.)
Writing lock file
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump
> App\Console\Installer::postInstall
Created `config/app.php` file
Set Folder Permissions ? (Default to Y) [Y,n]?
Permissions set on /home/USER/www/test/app/tmp/cache
Permissions set on /home/USER/www/test/app/tmp/cache/models
Permissions set on /home/USER/www/test/app/tmp/cache/persistent
Permissions set on /home/USER/www/test/app/tmp/cache/views
Permissions set on /home/USER/www/test/app/tmp/sessions
Permissions set on /home/USER/www/test/app/tmp/tests
Permissions set on /home/USER/www/test/app/tmp
Permissions set on /home/USER/www/test/app/logs
Updated Security.salt value in config/app.php

こんな感じで無事インストールができました。

インストールが完了したら、今後に影響がないように、intlの設定を戻します。

% composer config --global --unset platform.ext-intl

ちなみに、intlが無い場合は、このようにコケます。

% composer create-project --prefer-dist cakephp/app test/app
Installing cakephp/app (3.4.2)
  - Installing cakephp/app (3.4.2): Downloading (100%)
Created project in test/app
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - cakephp/cakephp 3.4.7 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.4.6 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.4.5 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.4.4 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.4.3 requires ext-intl * -> the requested PHP extension intl is missing from your system.

プラグイン intlless をインストー

このままアクセスすると、案の定エラーがでます。

Fatal error: You must enable the intl extension to use CakePHP. in /home/USER/www/test/app/config/bootstrap.php on line 25

なので、intlを使わなくてもCakePHP3が使えるようになる、intlless をインストールします。
github.com

composerで、intllessのインストール。

% cd test/app
% composer require --prefer-dist chinpei215/cakephp-intlless
Using version ^1.0 for chinpei215/cakephp-intlless
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing chinpei215/cakephp-intlless (1.0.1): Loading from cache
Writing lock file
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump

最後に、 config/bootstrap.php でintllessを読み込み、intl関連の記述をコメントアウトします。
詳細は、intllessのgithubページを参照してください。

完了

f:id:suprsonicjetboy:20170601172225p:plain

Your version of PHP does NOT have the intl extension loaded. と正しい警告が。
これで、intlを使わずに、無事CakePHP3を表示できました!
intlless の開発者の @chinpei215 さんには感謝しかありません。

* intlを使わないことで少なからず制限があるので、その辺りは留意しましょう。

参考

vagrant up で mount: unknown filesystem type 'vboxsf' が出る場合

すぐ忘れるのでメモ。

環境

Owner: Windows 10 Home Edition
Guest: CentOS7
VirtualBox: 5.1.22
Vagrant: 1.9.5

エラー

Boxは、CentOS7
マニュアル通り初期化。

C:\Users\suprsonicjetboy\dev>vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Vagrantfileは、ほぼ初期状態で、config.vm.synced_folder だけを追記。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
end

起動。

C:\Users\suprsonicjetboy\dev>vagrant up --provider virtualbox
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'centos/7'
    default: URL: https://atlas.hashicorp.com/centos/7
==> default: Adding box 'centos/7' (v1704.01) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/centos/boxes/7/versions/1704.01/providers/virtualbox.box
    default: Progress: 100% (Rate: 2318k/s, Estimated time remaining: --:--:--)
==> default: Successfully added box 'centos/7' (v1704.01) for 'virtualbox'!
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/7' is up to date...
==> default: Setting the name of the VM: vm_default_1494922631778_58849
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default:
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/suprsonicjetboy/vm
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

mount: unknown filesystem type 'vboxsf'

解決

プラグイン vagrant-vbguest のインストールで一発。

C:\Users\suprsonicjetboy\dev>vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Fetching: micromachine-2.0.0.gem (100%)
Fetching: vagrant-vbguest-0.14.2.gem (100%)
Installed the plugin 'vagrant-vbguest (0.14.2)'!

C:\Users\suprsonicjetboy\dev>vagrant up --provider virtualbox
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'centos/7' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
[default] No installation found.
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Package kernel-devel-3.10.0-514.16.1.el7.x86_64 already installed and latest version
Package gcc-4.8.5-11.el7.x86_64 already installed and latest version
Package binutils-2.25.1-22.base.el7.x86_64 already installed and latest version
Package 1:make-3.82-23.el7.x86_64 already installed and latest version
Package 4:perl-5.16.3-291.el7.x86_64 already installed and latest version
Package bzip2-1.0.6-13.el7.x86_64 already installed and latest version
Nothing to do
Copy iso file C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
mount: /dev/loop0 is write-protected, mounting read-only
Installing Virtualbox Guest Additions 5.1.22 - guest version is unknown
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.1.22 Guest Additions for Linux...........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Starting the VirtualBox Guest Additions.
Redirecting to /bin/systemctl start  vboxadd.service
Redirecting to /bin/systemctl start  vboxadd-service.service
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/suprsonicjetboy/vm
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

最後に

Windows 10 Home Edition をグレードアップして、Docker for Windows を使いたい…

ブラウザ毎の最小フォントサイズを調べた

ブラウザのフォントサイズの最小は、いままで10pxだと思っていたけど、実は1pxでも表示できていました。
この際なので、自前のデバイスで確認できるだけ確認してみました。

書体は特に指定しておらず、ブラウザのデフォルトでの検証です。
単位は、px。

検証

ブラウザ OS バージョン 最小サイズ
Chrome Windows10 58.0.3029.96 (64-bit) 10px
Chrome macOS Sierra 58.0.3029.96 (64-bit) 10px
Chrome iOS10 58.0.3029.83 1px
Chrome Android5.1 58.0.3029.83 1px
FireFox Windows10 53.0.2 (64 ビット) 1px
FireFox macOS Sierra 53.0.2 (64 ビット) 1px
FireFox iOS10 7.4 1px
FireFox Android5.1 53.0.2 1px
Sleipnir Windows10 6.2.4.4000 10px
Sleipnir macOS Sierra 4.5.7015 1px
Sleipnir iOS10 4.3.4 1px
Sleipnir Android5.1 3.5.5 1px
Safari macOS Sierra 10.1 1px
Safari iOS10 (iOS10.3.1) 1px
Edge Windows10 38.14393.1066.0 1px
IE11 Windows10 11.1066.14393.0 1px

(2017/05/08 現在)

結果

最小値はブラウザ毎に異なっているとの認識はあったのですが、2017年にもなってそれが全ブラウザ10pxだと思い込んでいました。
普段使いのChromeのフォントの最小サイズが10pxだったので、いつの間にかに10pxだと刷り込まれていたようです。。。

現在でも、PC版のWindowsChromeSleipnirMacChromeにおいては下限が10pxとなっていますが、可読性を考えると10pxはそうそう使わないし、ましてや8pxとかなんて使ったことがないので、気にしなくてもいいのかなと。
あの小さいFacebookのいいねボタンですら11pxですし。

モバイルの場合は8pxでも読めなくはないので、レイアウトを気にするのであれば、アイコンあたりにはギリギリ使えるのかなと思います。

まとめ

思い込みはいけないですね。。。

TensorFlowでランダムな数値を作成する

TensorFlowでランダムな数値を作るのに手こずったのでメモ。

方法

# TensorFlow 
_n = tf.random_uniform([1], minval=0, maxval=4, dtype=tf.int32, seed=None, name=None)
n = _n[0]

# numpy
import numpy as np
_n = tf.random_shuffle(np.arange(4), seed=None, name=None)
n = _n[0]

この例では、0~3の範囲で、ランダムに出力します。

tf.random_uniform()は、minvalからmaxvalまでの連続値を取ります。
奇数とかのランダム値作りたい場合は、tf.random_shuffle()に奇数のリストを渡せばOKです。

ランダム系のメソッド

  • tf.random_normal
  • tf.truncated_normal
  • tf.random_uniform
  • tf.random_shuffle
  • tf.random_crop
  • tf.multinomial
  • tf.random_gamma
  • tf.set_random_seed

Constants, Sequences, and Random Values  |  TensorFlow