baroqueworksdevの日記baroqueworksdevの日記2019年8月17日土曜日UIScreenEdgePanGestureRecognizerをプログラムで実装するViewControllerに実装するstoryboardではなく、プログラムでEdgeスワイプを実装してみました。UIScreenEdgePanGestureRecognizerをViewController.viewに追加して、selectorを使ってメソッドでハンドリングします。}}クラスに実装するViewControllerがファットになりそうなので、クラス化してみました。処理はほぼ同様で、selectorを新しく作成したSwipeLeftEdgePanGestureのメソッドを指定しています。Restoringモデルの保存/復元はtf.train.Saverオブジェクトを使用してください。コンストラクタはすべてのグラフ操作、特定のリスト、グラフ内の変数の保存/復元が可能です。Saverオブジェクトは、これらのopsを実行するメソッドを提供し、チェックポイントファイルの書き込みまたは読み取りのパスを指定します。Files変数はバイナリファイルに保存され、大まかに、変数名からテンソル値までのマップを含みます。Saverオブジェクトを作成するときは、チェックポイントファイル内の変数の名前を任意に選択できます。デフォルトでは、変数ごとにVariable.nameプロパティの値が使用されます。チェックポイント内の変数を理解するには、inspect_checkpointライブラリ、特にprint_tensors_in_checkpoint_file関数を使用します。Variablestf.train.Saver()を使用してSaverを作成し、モデル内のすべての変数を管理します。Variables同じSaverオブジェクトが変数の復元に使用されます。ファイルから変数を復元するときは、あらかじめそれらを初期化する必要はありません。Restoretf.train.Saver()に引数を渡さない場合、グラフのすべての変数がSaverによって処理されます。それぞれの変数は、変数の作成時に渡された名前で保存されます。チェックポイントファイル内の変数の名前を明示的に指定すると便利なことがあります。"params"という名前の新しい変数にリストアすることができます。モデルによって使用される変数のサブセットの保存または復元のみが有用な場合もあります。5層のニューラルネットを訓練して、6層の新しいモデルを訓練し、以前訓練されたモデルの5つの層のパラメータを新しいモデルの最初の5つの層に復元する必要があります。tf.train.Saver()コンストラクタにPythonのdictionaryを渡すことで、保存する名前と変数を簡単に指定できます。keysは使用する名前、valueは管理する変数です。ノート:モデル変数の異なるサブセットを保存して復元する必要がある場合は、必要な数のセーバーオブジェクトを作成できます。同じ変数を複数の保存オブジェクトにリストすることができます。restore()メソッドが実行されたときにのみ変更されます。詳細は、tf.initialize_variablesを参照してください。Loadinghttps://www.tensorflow.org/versions/r0.12/how_tos/variables/index.html#variables-creation-initialization-saving-and-loadingInitialization変数の初期化は、他の操作を行う前に明確に実行する必要があります。モデルを使用する前にすべての変数を初期化を実行して下さい。チェックポイントファイルから変数の値を復元することもできます(以下を参照)変数を初期化するには、tf.global_variables_initializer()を使用します。モデルを完全に生成してセッションを起動した後にのみ、そのオペレーションを実行してください。Variable他の変数の初期値で変数を初期化することも可能です。tf.global_variables_initializerによって追加された演算子はすべての変数を並列に初期化するので、必要なときは注意して下さい。他の変数の値から変数を初期化は変数のinitialized_value()プロパティを使います。初期化された値は、新しい変数の初期値として直接使用することも、他のテンソルとして使用して新しい変数の値を計算することもできます。Initializationtf.global_variables_initializerは、モデル内のすべての変数を初期化するための演算子を追加します。初期化する変数の明示的なリストを渡すこともできます。変数が初期化されているかどうかのチェックなど、その他のオプションについては変数ドキュメントを参照してください。復元モデルを列挙にする際、パラメータを保持、更新するためにVariables(以後、変数)を使います。Variablesは行列としてメモリ上に存在します。変数は明示的に初期化する必要があり、トレーニング中かつトレーニング後はディスク上に可能です。保存された値を後で復元して、モデルを実行または分析することができます。このドキュメントでは、次のTensorFlowクラスを参照しています。class.Creation変数を生成する際、初期値としてTensrに値をVariable()コンストラクタに渡します。TensorFlowは、定数やランダムな値から初期化するためによく使われるテンソルを生成するopsのコレクションを提供します。これらすべての操作では、テンソルの形状を指定する必要があります。その形状は自動的に変数の形になります。変数は一般的に固定された形状を持ちますが、TensorFlowは変数を再構成する高度なメカニズムを提供します。name="biases")tf.Variable()をコールすると、グラフにopsが追加されます。・保持:値を保持する・初期化:変数を初期化する。実際にはtf.assignで操作する。・初期値:biases変数のゼロ初期化など。この例ではグラフに追加もしているtf.Variable()の値が返す値は、Pythonクラスtf.Variableのインスタンスです。placement変数は、生成するときに特定のデバイスに固定することができます。tf.deviceを使用します。tf.Variable(...)変数をmutateする操作、v.assign()やtf.train.Optimizer内でパラメータを更新する操作は同じデバイス上で実行する必要があります。互換性のないデバイス配置指定は、これらの操作を生成するときに無視されます。複製された設定で実行する場合、デバイス配置は特に重要です。複製されたされたモデルのデバイス設定を簡素化できるデバイス機能の詳細は、tf.train.replica_device_setterを参照してください。PyCharm編PyCharmを起動して新しいプロジェクオを作成、interpreterでtensoflowの環境を選択します。LibrariesにTensorFlowに必要なライブラリが入った状態になります。TensorFlow用のpyファイルを作成して、コーディングします。Runを押して、プログラムを実行。実行結果はPyCharm上で確認できます。Terminalで実行するより、PyCharmなどのIDEで開発する方が効率が良いです。動作確認編r.0.10の動作確認用のソースコードが用意されています。インストール後に実行してみましょう。Pythonファイルを作成します。bの、aとbの値を求めるプログラムです。[0.3]プログラムの実行。インストール編TensorFlow以下、公式ページを参考にしました。所要時間5分以内で完了します。virtualenvVirtualenvの環境を構築する。ディレクトリは~/tensorflowを指定。~/tensorflowVirtualenvで構築した環境に入る。~/tensorflow/bin/activatepipを用いてTensorFlowをインストールする。TensorFlowをCPUのみで動作させる場合と、GPUを有効にする場合でURLが異なるので注意。$TF_BINARY_URL成功すると次のメッセージが表示される。tensorflow-0.10.0以上でインストールは終了です。TensorFlow環境からexitする場合は次のコマンドを実行する。自アプリケーションがTOPかどうか確認する方法(4)ActivityのTaskListの順番を見るよりは、アプリケーションプロセスを見る方が正確だと思います。ActivityManager#getRunningAppProcesses()で取得可能です。Actionは特定のWebサイトのみアイコンを表示させます。必要なことは以下の2つ。以前の記事でApplication単位でresume/pauseのハンドリングが不可能とわかりました。Studioのコードフォーマッタを設定するチーム開発を行う場合、フォーマッタは重要です。メンバー全員のフォーマッタを統一しないとソース管理で痛い目にあいます。AOSPにAndroid用のCodeStyleがアップされています。こちらからDLしましょう。以下、各パーツと要素名です。style.xmlにて各要素の色を指定します。Coverage機能を使用するために、app直下のbuild.gradleに追加します。getRunningTasks()と同様にgetRecentTasks()を見てみます。ActivityManagerService#getRecentTasks()の処理をチェック。KitKatの表示レイヤーについてandroid-4.4_r1がAOSP上で公開されました。毎度おなじみの表示レイヤーのチェックを行いました。SectionありのDataSourceを生成する本家のサンプルにも記載されている通り、RxDataSourcesを使用する方法があります。ht...GeoFenceの登録GeoFenceの登録は次のような手順で行います。