私は最近、機械学習を研究しています。だからケラスやテンソルフロー(ケラスを使わない)でいくつかのcnnモデルを作ってスキルを鍛える。しかし、kerasとtensorflowの結果は同じではありません。それは非常に混乱しています。CNNの結果はケラスとテンソルの流れが異なります
keras結果は68%とtensorflowあり、ここで66.6パーセント
はtensorflowコードです:
def convolution(self, inputs_fw):
inputs_fw = tf.nn.dropout(inputs_fw, keep_prob=self.dropout_keep_prob)
with tf.name_scope('forward_conv'):
fil1 = 2
fil2 = 3
conv1_fw = tf.layers.conv1d(inputs_fw,filters=100,kernel_size=fil1,padding="VALID",activation=tf.nn.tanh)#tanh
print "print conv1"
print conv1_fw
conv1_fw = conv1_fw + self.cbiases['convolution1']
pool_fw = tf.layers.max_pooling1d(inputs=conv1_fw,pool_size=self.max_sentence_len-fil1+1,strides=self.max_sentence_len-fil1+1)
print pool_fw
pool_fw_flat =tf.reshape(pool_fw, [-1,1*100])
conv1_fw2 = tf.layers.conv1d(inputs_fw,filters=100,kernel_size=fil2,padding="VALID",activation=tf.nn.tanh)#tanh
print "print conv12"
conv1_fw2 = conv1_fw2 + self.cbiases['convolution2']
print conv1_fw2
pool_fw2 = tf.layers.max_pooling1d(inputs=conv1_fw2,pool_size=self.max_sentence_len-fil2+1,strides=self.max_sentence_len-fil2+1)
print pool_fw2
pool_fw_flat2 =tf.reshape(pool_fw2, [-1,1*100])
output = tf.concat([pool_fw_flat,pool_fw_flat2],1)
predict = tf.matmul(output, self.weights['softmax_conv']) + self.biases['softmax_conv']
print predict.get_shape()
return predict
損失と精度がで構成されています
with tf.name_scope('loss'):
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prob, labels=self.y))
with tf.name_scope('train'):
global_step = tf.Variable(0, name="tr_global_step", trainable=False)
optimizer = tf.train.AdadeltaOptimizer(learning_rate=self.learning_rate).minimize(cost, global_step=global_step)
with tf.name_scope('predict'):
correct_pred = tf.equal(tf.argmax(prob, 1), tf.argmax(self.y, 1))
# accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
accuracy = tf.reduce_sum(tf.cast(correct_pred, tf.int32))
私はいくつかを作りました間違い? 多くのありがとうございます。
再実行を取得するために
softmax
を使用してnoptあるようだが、結果は(データセットが大きいので、それが動作)とほぼ同じです。しかし、私はドロップアウト層がランダムに層出力に何らかの問題を引き起こすかもしれないことに同意します。だから私はそれを確認します。ありがとう! –私はドロップアウト層は問題ではないと思う –