当前位置: 首页 > 知识库问答 >
问题:

是否有可能只在pythontenstorflow中运行预测方法而不运行整个文件?[重复]

颜君浩
2023-03-14

我对Python非常陌生,实际上这是我写的第一篇文章,如果有人能给我解释一下,我将不胜感激

我遵循一个教程,使用TensorFlow构建了一个简单的人工神经网络。我使用了PyCharm社区版来实现这一点

import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn.preprocessing import LabelEncoder
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
  
dataset = pd.read_csv('file.csv')
X = dataset.iloc[:, 3:-1].values
y = dataset.iloc[:, -1].values

le = LabelEncoder()
X[:, 2] = le.fit_transform(X[:, 2])

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = np.array(ct.fit_transform(X))

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

ann = tf.keras.models.Sequential()

ann.add(tf.keras.layers.Dense(units=6, activation='relu'))
ann.add(tf.keras.layers.Dense(units=6, activation='relu'))
ann.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))

ann.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

ann.fit(X_train, y_train, batch_size = 32, epochs = 100)

现在我想用这个人工神经网络来预测结果。我的问题是,我是否可以执行下面这行代码,而不必从代码的开头运行整个脚本并将其放在代码的末尾?

ann.predict(sc.transform([[0, 1, 0, 0, 0, 60, 1, 100, 1, 0, 0, 10000]]))

据我所知,每次我运行脚本时,都会创建新的神经网络,然后对其进行训练。我想跳过整个过程,只训练一次网络,然后使用它进行预测,而不必从一开始就运行它。这有可能吗?我尝试在Python控制台中执行它,但它不起作用(我想这是因为当我这样做时,程序已经停止运行)。

共有1个答案

奚英朗
2023-03-14

训练模型后,可以将其保存到磁盘并在另一个脚本中重复使用。安之后。拟合(…),您可以保存它:

ann.save('name_of_model')

然后,如果你想再次使用它(在不同的脚本中):

ann = tf.keras.models.load_model('name_of_model')

如果您想在一个脚本中拥有所有内容,也许您可以做的是检查模型是否已经保存到磁盘,如果没有,则训练它并保存它,如果是,则只从磁盘加载它。

 类似资料:
  • 问题内容: 我有一个用于Go包的测试套件,该套件实现了十二个测试。有时,套件中的一项测试失败了,我想单独重新运行该测试,以节省调试时间。这可能吗,还是每次都必须为此编写一个单独的文件? 问题答案: 使用该标志运行特定的测试。该标志记录在go工具文档的测试标志部分中:

  • 问题内容: 无论如何在运行时重写方法?即使需要从该实例动态创建子类? 问题答案: 使用纯Java,否。 使用ByteBuddy(首选),asm,cglib或Aspectj时,可以。 在纯Java中,在这种情况下要做的事情是创建一个基于接口的代理,该代理处理方法调用并委托给原始对象(或不委托)。

  • 我试图对一个模型执行预测,该模型是我使用“Finetuning AlexNet with TensorFlow”https://kratzert.github.io/2017/02/24/Finetuning-AlexNet-with-TensorFlow.html训练的 我在Python中使用保存了模型,并在Java中使用加载了模型。守则的主要部分是: 我得到了一个例外: 我看到上面的代码对一些

  • 我从以下链接实现了re运行失败的TestNG测试类的逻辑: 不幸的是,它使用“test”注释运行该方法,而不运行BeforeClass(@BeforeClass)和AfterClass(@AfterClass)方法。我试图研究ITestAnnotations的setDependsOnMethods和getDependsOnMethods方法,但没有成功。 有人知道如何让侦听器类同时运行Before