現在、Tensorflowを使用してディープニューラルネットワークを構築しています。 (元の論文を参照してくださいジェフリーヒントンhere)。Tensorflow TypeError: 'Switch'の 'pred'を入力すると、boolの予想されるタイプと一致しないfloat32型が返される
Tensorflowは、このの世話をする機能を有している、と私はオーレリアンジェロンの本(途中で、信じられないほどである、)Scikit-学び& Tensorflowとハンズオン機械学習によるチュートリアルを次のようです。その中に、ドロップアウトを実現するために彼のサンプルコードはtraining
プレースホルダを宣言から構成:次に
training = tf.placeholder(tf.float32, shape =(), name = "training")
及び隠れ層ドロップアウトオブジェクトを作成する:
hidden1_drop = tf.layers.dropout(hidden1, dropout_rate, training = training)
私はこれを実行するときしかし、私はエラーを受け取ります上記の行を指しています。私はTensorflow documentation regarding dropoutに見えた
TypeError: Input 'pred' of 'Switch' Op has type float32 that does not match expected type of bool
は、tf.layers.dropout()
方法のtraining
パラメータは
Either a Python boolean, or a TensorFlow boolean scalar tensor (e.g. a placeholder). Whether to return the output in training mode (apply dropout) or in inference mode (return the input untouched).
として定義されているが、上記のコードでは、私ははっきりtf.float32
に渡しています。私はこれが私のエラーの原因だと思っています。エラーメッセージそのものにも述べられています。これは単に作者の誤植だったのでしょうか、私は何が起こっているのかを理解していませんか?
代わりに、隠しレイヤー宣言をこの行で置き換えるべきですか?
hidden1_drop = tf.layers.dropout(hidden1, dropout_rate, training = True)
私も、このように、他のSO posts with similar errorsに見てきたが、答えは、私はごく最近の私の上に設置大文字されていない、エラーがTensorflowの古いバージョンに由来することを示唆しているように見えます数週間前にマシンを起動します。