0

I am new at python and am trying to get the output of this command into a string,

C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py --temperature 0.8 --top_k 40 --model_name run1-- nsamples  1 --length 100

Here are the things I have tried with '>>>' denoting the issue with each.

Is there a better method I am not aware of?

python 3.7 spyder

How to run python file in Tkinter

from subprocess import Popen
p = Popen("C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py --temperature 0.8 --top_k 40 --model_name run1--nsamples  1 --length 100")
stdout, stderr = p.communicate()

>>>OSError: [WinError 193] %1 is not a valid Win32 application

Run a Python script from another Python script, passing in arguments

import os
os.system("C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py --temperature 0.8 --top_k 40 --model_name run1 --nsamples  1 --length 100")

>>>(Script does not complete and output is not gathered)

Assign output of os.system to a variable and prevent it from being displayed on the screen

text = os.popen('cat C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py --temperature 0.8 --top_k 40 --model_name run1 --nsamples  1 --length 100').read()

>>>(doesnt run it)

How to import a module given the full path?

import importlib.util
spec = importlib.util.spec_from_file_location("generate_unconditional_samples", "C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py")
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
foo.MyClass()

>>>ModuleNotFoundError: No module named 'fire'(fire is the first import call in the module also no augments)

Python: read output while executing cmd commands

command='cmd /C C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py --temperature 0.8 --top_k 40 --model_name run1 --nsamples  1 --length 100'
proc=Popen(command,creationflags=CREATE_NEW_CONSOLE,stdout=PIPE)
output=proc.communicate()[0]
print (output)

>>>b''(thats the full output)

Expected execution

C:\GPT2\gpt-2-finetuning>C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py --temperature 0.8 --top_k 40 --model_name run1 --nsamples  1 --length 100
2020-05-07 23:14:59.846175: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found
2020-05-07 23:14:59.852383: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\model.py:147: The name tf.AUTO_REUSE is deprecated. Please use tf.compat.v1.AUTO_REUSE instead.

WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py:52: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.

2020-05-07 23:15:02.748274: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found
2020-05-07 23:15:02.754792: E tensorflow/stream_executor/cuda/cuda_driver.cc:318] failed call to cuInit: UNKNOWN ERROR (303)
2020-05-07 23:15:02.769396: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: DESKTOP-[redacted]
2020-05-07 23:15:02.775857: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: DESKTOP-6H0CO8Q
2020-05-07 23:15:02.782411: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py:54: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.

WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\model.py:148: The name tf.variable_scope is deprecated. Please use tf.compat.v1.variable_scope instead.

WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\model.py:152: The name tf.get_variable is deprecated. Please use tf.compat.v1.get_variable instead.

WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\model.py:36: The name tf.rsqrt is deprecated. Please use tf.math.rsqrt instead.

WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\model.py:166: The name tf.add_to_collection is deprecated. Please use tf.compat.v1.add_to_collection instead.

WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\sample.py:65: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.cast` instead.
WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\sample.py:16: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\sample.py:70: multinomial (from tensorflow.python.ops.random_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.random.categorical` instead.
WARNING:tensorflow:From C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py:63: The name tf.train.Saver is deprecated. Please use tf.compat.v1.train.Saver instead.

======================================== SAMPLE 1 ========================================
<user>dont be like that
<user>I dont want to be a kid anymore
(ect.)

1 Answer 1

1

Perhaps try calling the python executable (make sure "python.exe" is in path or specify the full path):

from subprocess import Popen
p = Popen("python C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py --temperature 0.8 --top_k 40 --model_name run1 --nsamples 1 --length 100")
stdout, stderr = p.communicate()

Also there are some typos in your arguments (no space after run1 and two spaces after --nsamples). You can always pass a list of arguments to Popen to not have to manage this:

from subprocess import Popen
p = Popen(["python", "C:\GPT2\gpt-2-finetuning\src\generate_unconditional_samples.py", "--temperature",  "0.8", "--top_k", "40", "--model_name", "run1", "--nsamples", "1", "--length", "100"])
stdout, stderr = p.communicate()
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for the response! Unfortunately there are still no values stored to stderr or stdout and the code does not appear to run as it is a usually very CPU intensive process and no increase in cpu usage was detected.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.