Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 每次尝试用神经网络识别图像时,我都会得到不同的答案_Python_Tensorflow_Keras_Neural Network - Fatal编程技术网

Python 每次尝试用神经网络识别图像时,我都会得到不同的答案

Python 每次尝试用神经网络识别图像时,我都会得到不同的答案,python,tensorflow,keras,neural-network,Python,Tensorflow,Keras,Neural Network,19年6月6日更新 你好,我用这个。我按照说明做了一切。但是我的网络就像一个随机值生成器一样,我完全不明白我做错了什么。如果有任何帮助,我将不胜感激 from tensorflow.keras.models import load_model from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Convolution2D from tensorflow.keras.layers im

19年6月6日更新

你好,我用这个。我按照说明做了一切。但是我的网络就像一个随机值生成器一样,我完全不明白我做错了什么。如果有任何帮助,我将不胜感激

from tensorflow.keras.models import load_model
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Convolution2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np
from keras.preprocessing import image
classifier = Sequential()
# Step 1 - Convolution
classifier.add(Convolution2D(32, 3, 3, input_shape = (64, 64, 3), activation = 'relu'))
# Step 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))
#сжатие
classifier.add(Flatten())

#full connection
classifier.add(Dense(128, activation='relu'))
classifier.add(Dense(1, activation='sigmoid'))

#compiling CNN

classifier.compile(optimizer='adam',loss='binary_crossentropy', metrics=['accuracy'])
train_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory(
        'dataset/training_set',
        target_size=(64,64),
        batch_size=32,
        class_mode='binary'
        )
test_set = train_datagen.flow_from_directory(
        'dataset/test_set',
        target_size=(64,64),
        batch_size=32,
        class_mode='binary'
        )
classifier.fit_generator(
        training_set,
                         steps_per_epoch = 8000,
                         epochs = 25,
                         validation_data = test_set,
                         validation_steps = 2000
        )

model = load_model('my_model1.h5')

model.summary()

test_image = image.load_img('random10.jpg',target_size=(64,64,3))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis=0)
result=classifier.predict(test_image)
training_set.class_indices

if result[0][0]>=0.5:
    prediction='dog'
else:
    prediction='cat';
print((result[0][0])*100)
print(prediction)
from tensorflow.keras.models import load_model
classifier.save('my_model1.h5')

我试图增加历代的数量,但没有帮助

我真的无法理解“不同的方式”这个词,但我想它的意思是“每次运行此代码时都会得到不同的答案”

问题是你对“没那么不同”这句话有什么期待

使用此代码所做的是在每次运行时再次对其进行训练

首先,您需要了解,每次在不使用分类器的情况下调用
classifier=Sequential()
。加载权重()时,它将使用随机数启动权重

因此,每当您运行此代码,甚至是世界上每一个具有不同权重的代码时,它都不会预测完全相同的值(结果

现在,如果你想让它在几个时代后预测正确的答案,而当前的模型无法做到这一点,那么你需要做的是增加模型的大小

像这样的

classifier = Sequential()
classifier.add(Convolution2D(32, 3, 3, input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Convolution2D(64, 3, 3, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Convolution2D(128, 3, 3, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Convolution2D(256, 3, 3, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

#full connection
classifier.add(Dense(128, activation='relu'))
classifier.add(Dense(1, activation='sigmoid'))