Spaces:
Running
Running
File size: 2,768 Bytes
728a6ed 5bd77b5 8bb6bcc 7f1aca2 4b990c7 a0a3cb8 7f1aca2 f39a294 5201e45 96f874d 027697d 5201e45 96f874d 027697d f39a294 96f874d 027697d 96f874d 628bb6f 731de2f 628bb6f e16c1f3 7b64b2c 7d34933 027697d 8357dbc cad848a 5839ded 6238472 8357dbc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# https://github.com/google-research/tensorflow-coder/blob/master/tf_coder/tf_coder_main.py
import streamlit as st
from tf_coder.value_search import colab_interface, value_search_settings
import io
from contextlib import redirect_stdout
from streamlit_ace import st_ace
st.set_page_config(page_icon='π©βπ»', layout="wide", initial_sidebar_state="collapsed")
col1, col2, col3 = st.columns([5, 5, 3])
with col1:
st.write('#### Inputs')
inputs = st_ace(placeholder="The input tensor(s) specified as a dictionary", value="{'rows': [10, 20, 30],\n'cols': [1,2,3,4]}", language="python", theme="solarized_dark", auto_update=True)
with col2:
st.write('#### Output')
output = st_ace(placeholder="The output tensor", value="[[11, 12, 13, 14],\n[21, 22, 23, 24],\n[31, 32, 33, 34]]", language="python", theme="solarized_dark", auto_update=True)
with col3:
st.write('#### Constants')
constants = st_ace(placeholder="Optional list of scalar constants", value="[]", language="python", theme="solarized_dark", auto_update=True)
st.write("#### Description")
description = st.text_input(label="", placeholder="An optional natural language description of the operation", value="add two vectors with broadcasting to get a matrix")
with st.expander("βοΈ Search Options", expanded=False):
settings_kwargs = dict()
settings_kwargs["require_all_inputs_used"] = st.checkbox("Require All Inputs", value=True)
settings_kwargs["only_minimal_solutions"] = st.checkbox("Only Minimal Solutions", value=False)
settings_kwargs["max_solutions"] = st.slider("Maximum number of solutions", value=1, min_value=1, step=1, max_value=256)
settings_kwargs["timeout"] = st.slider("Timeout in seconds", value=300, min_value=1, step=10, max_value=300)
if st.button("π Search for Tensor Ops!"):
i = eval(inputs)
o = eval(output)
c = eval(constants)
settings = value_search_settings.from_dict({
'timeout': settings_kwargs["timeout"],
'only_minimal_solutions': settings_kwargs["only_minimal_solutions"],
'max_solutions': settings_kwargs["max_solutions"],
'require_all_inputs_used': settings_kwargs["require_all_inputs_used"],
'require_one_input_used': not settings_kwargs["require_all_inputs_used"],
})
with st.spinner("Searching for solution..."):
results = colab_interface.run_value_search_from_colab(i, o, c, description, settings)
num_solutions = len(results.solutions)
solution_solutions = " solutions" if num_solutions > 1 else " solution"
st.write(f"Found {num_solutions}{solution_solutions} in {results.total_time} seconds")
for solution in results.solutions:
st.code(solution.expression, language='python')
st.write(dir(results)) |