Ich versuche, mein Python-Skript, das Tensorflow-Bibliothek (nicht sicher, ob es relevant ist) in Laravel verwendet. Mein Problem ist, dass ich alle Nachrichten zurück an PHP zurückgebe, nachdem ich irgendetwas mit der TF-Bibliothek gemacht habe.Tensorflow-Python-Skript in PHP laufen Laravel
Ihave folgenden versucht, Methoden ausführen
$command = 'python C:/wamp64/www/hi.py';
$execMethod = exec($command);
$systemMethod = system($command);
$shellMethod = shell_exec($command);
Mein Python-Skript:
#!c:/Program Files/Python36/python.exe
import os
import urllib.request
import tensorflow as tf
import numpy as np
import time
IRIS_TRAINING = "iris_training.csv"
IRIS_TRAINING_URL = "http://download.tensorflow.org/data/iris_training.csv"
IRIS_TEST = "iris_test.csv"
IRIS_TEST_URL = "http://download.tensorflow.org/data/iris_test.csv"
def main():
# If the training and test sets aren't stored locally, download them.
if not os.path.exists(IRIS_TRAINING):
raw = urllib.request.urlopen(IRIS_TRAINING_URL).read()
with open(IRIS_TRAINING, "wb") as f:
f.write(raw)
if not os.path.exists(IRIS_TEST):
raw = urllib.request.urlopen(IRIS_TEST_URL).read()
with open(IRIS_TEST, "wb") as f:
f.write(raw)
# Load datasets.
training_set = tf.contrib.learn.datasets.base.load_csv_with_header(filename=IRIS_TRAINING, target_dtype=np.int,
features_dtype=np.float32)
test_set = tf.contrib.learn.datasets.base.load_csv_with_header(filename=IRIS_TEST, target_dtype=np.int,
features_dtype=np.float32)
# Specify that all features have real-value data
feature_columns = [tf.feature_column.numeric_column("x", shape=[4])]
# Build 3 layer DNN with 10, 20, 10 units respectively.
classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
hidden_units=[10, 20, 10],
n_classes=3,
model_dir="c:/wamp64/www/Laravel/resources/pythonscripts/tmp/iris_model") # Define the training inputs
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": np.array(training_set.data)},
y=np.array(training_set.target),
num_epochs=None,
shuffle=True)
# Train model.
classifier.train(input_fn=train_input_fn, steps=1000)
# Define the test inputs
test_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": np.array(test_set.data)},
y=np.array(test_set.target),
num_epochs=1,
shuffle=False)
# Evaluate accuracy.
accuracy_score = classifier.evaluate(input_fn=test_input_fn)["accuracy"]
print("\nTest Accuracy: {0:f}\n".format(accuracy_score))
ich die Ausgänge alle vor tf.contrib.learn.datasets.base.load_csv_with_header()
erhalten, nachdem diese alle Drucke leer sind.
Ich rate mein Skript wird vollständig ausgeführt, weil es die gleiche Menge an Zeit benötigt, um die Ausgabe zu produzieren, als wenn ich es auf Apache2 ausführen, die wie erwartet funktioniert. Ich führe es von localhost/test.py
Wenn von PHP ausgeführt wird, erzeugt der Code Dateien und speichert Klassifikator wie erwartet. Ausgabe ist das Problem.
Ich werde jedes geteilte Wissen schätzen!
versuchen dabei ein 'chdir (/ path/das/script/ist/in)' in PHP zuerst, weil Sie auf Dateinamen in einem relativen Pfad sind aber beziehen Pfade möglicherweise nicht passen Sie richtig an. – apokryfos
Nicht funktioniert, beachten Sie, dass ich nicht ein Problem beim Ausführen der Skripts, sondern eher daraus. Ich habe auch oben das Python-Skript bearbeitet, um Ihnen eine bessere Perspektive zu geben – tensa11